linux

Golang日志格式在Linux中如何自定义

小樊
44
2025-05-08 15:37:43
栏目: 编程语言

在Golang中,你可以使用标准库"log"或者第三方库(如"logrus"或"zap")来自定义日志格式。这里我将向你展示如何使用标准库"log"来自定义日志格式。

首先,你需要导入"log"和"os"包:

import (
	"log"
	"os"
)

接下来,你可以创建一个自定义的日志格式。在这个例子中,我们将创建一个包含时间戳、日志级别和消息的格式:

type customLogger struct {
	logger *log.Logger
}

func (cl *customLogger) log(level string, msg string) {
	time := os.Getenv("LOG_TIME", "2006-01-02 15:04:05")
	level = os.Getenv("LOG_LEVEL", level)
	fmt.Fprintf(cl.logger.Output, "%s [%s] %s\n", time, level, msg)
}

func (cl *customLogger) Println(v ...interface{}) {
	cl.log("INFO", fmt.Sprintln(v...))
}

func (cl *customLogger) Printf(format string, v ...interface{}) {
	cl.log("INFO", fmt.Sprintf(format, v...))
}

func (cl *customLogger) Fatalln(v ...interface{}) {
	cl.log("FATAL", fmt.Sprintln(v...))
	os.Exit(1)
}

func (cl *customLogger) Fatalf(format string, v ...interface{}) {
	cl.log("FATAL", fmt.Sprintf(format, v...))
	os.Exit(1)
}

现在,你可以创建一个自定义日志记录器实例,并使用它来记录日志:

func main() {
	logger := log.New(os.Stdout, "", log.LstdFlags)
	customLogger := &customLogger{logger: logger}

	customLogger.Println("This is an info message")
	customLogger.Printf("This is a formatted message with a number: %d", 42)
	customLogger.Fatalln("This is a fatal message")
}

这个例子中的customLogger结构体包含一个标准库的log.Logger实例。我们为其定义了一些方法,这些方法会在记录日志时使用自定义的格式。在这个例子中,我们使用了环境变量LOG_TIMELOG_LEVEL来控制时间戳和日志级别的显示。

要运行这个程序,你可以将其保存为一个.go文件(例如main.go),然后在Linux终端中使用go run main.go命令来执行它。你还可以根据需要修改环境变量来更改日志格式。

0
看了该问题的人还看了