在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_TIME
和LOG_LEVEL
来控制时间戳和日志级别的显示。
要运行这个程序,你可以将其保存为一个.go
文件(例如main.go
),然后在Linux终端中使用go run main.go
命令来执行它。你还可以根据需要修改环境变量来更改日志格式。