Go新增的slog: structured, leveled logging

2023-06-18 11:20:18 浏览数 (2)

go现有的log库有什么问题

Go社区最近对log/slog搞得热火朝天。按我理解,标准库中的log包 功能拉胯(较大痛点如缺少info/warn等日志级别;只能以纯文本形式,不支持JSON等结构化),于是正式项目大多用第三方日志库如logrus,zap等。

这篇文章更全面总结了现有log包存在的问题


go新增的log/slog是干什么的

log/slog 是一个 Go 语言实现的日志库,可以帮助开发人员在应用程序中记录各种信息和调试消息,从而更好地了解应用程序的运行情况。它提供了多种不同的日志级别和灵活的配置选项,可以根据需要将日志输出到文件、控制台或其他第三方工具。slog 相对于标准库中的 log 包来说,拥有更丰富的功能和更高的性能,而且易于使用和扩展。

即将在新版本增加的slog,提供结构化日志功能,很大程度可以认为是第三方日志库的“竞品”。(slog最开始和slices,maps一样位于试验性质的x/exp包,现已过提案,“转正”进入到标准库)

文档可参考 src/log/slog/doc.go (https://github.com/golang/go/blob/master/src/log/slog/doc.go)

相关设计由Jonathan Amsterdam提出并开发 (https://github.com/golang/go/commits?author=jba&before=91b8cc0dfaae12af1a89e2b7ad3da10728883ee1 35)

相关提案 (https://go.googlesource.com/proposal/ /master/design/56345-structured-logging.md?pli=1#)

log/slog: structured, leveled logging (https://github.com/golang/go/issues/56345)

从x/exp移入标准库的初始化提交 (https://github.com/golang/go/commit/f67b0a73e30d4780c90f2a7d7dd659affea99f43)


诸多知名的第三方日志库前景如何?

slog如果能做得足够优秀,兼具logrus的易用和zap,zerolog的高性能(当然恐怕很难既要又要),那后面用户新写项目,可能就不会再用这些第三方日志库---这也可以当成衡量这个新package成败的指标。

有点像当初微信电商生态缺失,于是有了补位的有赞微盟。而假如有天

0 人点赞