Go 日志库 gookit/slog v0.6.0 发布: SubLogger 支持和上下文增强

5 天前
 jxia

易于使用的,轻量级、可配置、可扩展的日志库 gookit/slog 现已发布 v0.6.0 版本!此版本带来了多项新功能和改进,旨在提供更强大的灵活性和更佳的用户体验。

Github: https://github.com/gookit/slog

主要更新

新增子记录器( Sub-logger )

例如:在需要共享上下文的场景(如 HTTP 请求处理)中,尝试传递 SubLogger 提升代码简洁性。

sub := slog.NewSub().
	KeepData(slog.M{"data1": "data1-value"}).
	KeepExtra(slog.M{"ext1": "ext1-value"}).
	KeepFields(slog.M{"field1": "field1-value"}).
	KeepCtx(context.WithValue(context.Background(), "ctx1", "ctx1-value"))
defer sub.Release()

callSomeHandler(sub, ...)

sub.Info("some message") // 会共享 sub logger 的 ctx, data, extra 等信息

上下文( Context )增强

使用示例:

ctx := context.WithValue(context.Background(), "ctx1", "ctx1-value")
slog.InfoCtx(ctx, "some log message")
slog.InfofCtx(ctx, "some log %s", "message")

增强的 JSON (Un)marshaler 支持

为了更好地与 JSON 格式的数据进行交互,我们为 RotateTime, RotateMode, LevelLevelMode 等枚举类型实现了 JSON UnmarshalerMarshaler 接口。

这意味着在进行 JSON 序列化和反序列化操作时,这些类型可以被更平滑、更直观地处理。可直接从 JSON 配置文件加载/导出日志设置,大幅简化配置管理流程。

自定义日志级别名称长度和颜色

为了让日志输出更加个性化和清晰,v0.6.0 版本引入了自定义日志级别名称(如 INFO, DEBUG)的显示长度和颜色的功能。现在,您可以根据自己的偏好调整这些视觉元素,使日志在控制台中更具可读性。

其他改进与修复

要了解完整的变更列表,请访问 GitHub Release 页面

如何升级?

您可以通过以下 Go 命令轻松更新到最新版本:

go get github.com/gookit/slog@v0.6.0
854 次点击
所在节点    Go 编程语言
1 条回复
spritecn
5 天前
要不是这个库早于官方 slog,真会被认为是碰瓷,java 转过来确实很无缝

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1156982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX