» Go语言快速入门 » 2. 进阶篇 » 2.6 日志

日志

在 Go 中,可使用内置的 log 包或其他第三方日志库进行日志记录,后者一般可提供更高级的功能。

常规日志

package main

import "log"

func main() {
	// 基本日志记录
	log.Println("This is a basic log message")

	// 带格式的日志记录
	name := "John"
	age := 30
	log.Printf("Name: %s, Age: %d", name, age)

	// 设置日志前缀
	log.SetPrefix("[MyApp] ")
	log.Println("Log message with custom prefix")

	// 设置日志标志
	log.SetFlags(log.Ldate | log.Ltime)
	log.Println("Log message with custom date and time format")
}

其输出:

2013/10/07 09:42:00 This is a basic log message
2013/10/07 09:42:00 Name: John, Age: 30
[MyApp] 2013/10/07 09:42:00 Log message with custom prefix
[MyApp] 2013/10/07 09:42:00 Log message with custom date and time format

结构化日志

log/slog 包提供了结构化日志,其中包括消息、严重级别和各种其他属性,这些属性展现为键值对。

package main

import (
	"log/slog"
	"os"
)

func main() {
	jsonHandler := slog.NewJSONHandler(os.Stdout, nil)
	myslog := slog.New(jsonHandler)
	myslog.Info("hi there")

	myslog.Info("hello again", "key", "val", "age", 25)
}

其输出:

{"time":"2009-11-10T23:00:00Z","level":"INFO","msg":"hi there"}
{"time":"2009-11-10T23:00:00Z","level":"INFO","msg":"hello again","key":"val","age":25}