在 Golang 中实现结构化日志输出,其实并没有想象中复杂,借助成熟的第三方日志库就能快速完成。这里推荐使用 logrus,它是 Go 开发中常见且功能完善的日志组件,对 JSON 结构化日志输出提供了良好的支持。

先安装这个库:
go get github.com/sirupsen/logrus
下面来看一个典型的 Golang 结构化日志示例:
package main
import (
"github.com/sirupsen/logrus"
)
type User struct {
Name string
Age int
}
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{}) // 设置日志格式为JSON
user := User{
Name: "John Doe",
Age: 30,
}
logrus.WithFields(logrus.Fields{
"user": user,
}).Info("User logged in")
}
这段代码主要完成了几个步骤:首先引入 logrus 库,然后通过 SetFormatter 将日志格式设置为 JSON。接着创建一个 User 结构体实例,再使用 WithFields 方法把结构体数据作为字段写入日志内容中。最后调用 Info 输出一条结构化日志信息。
运行程序后,你会看到类似下面这样的 JSON 日志输出结果:
{"user": {"Age": 30, "Name": "John Doe"}, "level": "info", "msg": "User logged in"}
通过这种方式,就可以在 Go 项目中实现清晰、易解析的结构化日志输出。实际使用时,你还可以根据业务需求自定义日志格式、字段内容以及日志级别。更多关于 Golang 日志库 logrus 的使用方法,可以参考官方文档:https://github.com/sirupsen/logrus
