易于使用的,轻量级、可配置、可扩展的日志库 gookit/slog
现已发布 v0.6.0 版本!此版本带来了多项新功能和改进,旨在提供更强大的灵活性和更佳的用户体验。
Github: https://github.com/gookit/slog
SubLogger
功能,允许创建子日志记录器。使用它记录日志会自动继承 SubLogger
的字段( fields )、数据( data )和上下文( ctx ),可以共享一些共用的上下文信息。logger.NewSub()
方法快速创建子记录器,适用于微服务、请求链路追踪等场景。例如:在需要共享上下文的场景(如 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 等信息
xxCtx
方法(如 InfoCtx()
、ErrorCtx()
),支持直接传入 context.Context
,简化带上下文的日志记录。CtxKeysProcessor
函数,可从 context.Context
中提取指定键值,自动填充到日志的 data
、extra
或 field
字段中,实现上下文数据的结构化采集。使用示例:
ctx := context.WithValue(context.Background(), "ctx1", "ctx1-value")
slog.InfoCtx(ctx, "some log message")
slog.InfofCtx(ctx, "some log %s", "message")
为了更好地与 JSON 格式的数据进行交互,我们为 RotateTime
, RotateMode
, Level
和 LevelMode
等枚举类型实现了 JSON Unmarshaler
和 Marshaler
接口。
这意味着在进行 JSON 序列化和反序列化操作时,这些类型可以被更平滑、更直观地处理。可直接从 JSON 配置文件加载/导出日志设置,大幅简化配置管理流程。
为了让日志输出更加个性化和清晰,v0.6.0 版本引入了自定义日志级别名称(如 INFO
, DEBUG
)的显示长度和颜色的功能。现在,您可以根据自己的偏好调整这些视觉元素,使日志在控制台中更具可读性。
github.com/gookit/gsr
→ v0.1.1gookit/goutil
→ v0.7.1 (更新相关包导入路径)要了解完整的变更列表,请访问 GitHub Release 页面。
您可以通过以下 Go 命令轻松更新到最新版本:
go get github.com/gookit/[email protected]
1
spritecn 3 天前
要不是这个库早于官方 slog,真会被认为是碰瓷,java 转过来确实很无缝
|