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

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

Github: github.com/gookit/slog

主要更新

新增子记录器(Sub-logger)

  • 上下文数据继承 :新增 SubLogger 功能,允许创建子日志记录器。使用它记录日志会自动继承 SubLogger 的字段(fields)、数据(data)和上下文(ctx),可以共享一些共用的上下文信息。
  • 高效上下文传递 :通过 logger.NewSub() 方法快速创建子记录器,适用于微服务、请求链路追踪等场景。

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

go 复制代码
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)增强

  • 快捷上下文方法 :为标准日志记录器和扩展日志记录器新增 xxCtx 方法(如 InfoCtx()ErrorCtx()),支持直接传入 context.Context,简化带上下文的日志记录。
  • 上下文数据处理器 :新增 CtxKeysProcessor 函数,可从 context.Context 中提取指定键值,自动填充到日志的 dataextrafield 字段中,实现上下文数据的结构化采集。

使用示例:

go 复制代码
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)的显示长度和颜色的功能。现在,您可以根据自己的偏好调整这些视觉元素,使日志在控制台中更具可读性。

其他改进与修复

  • 日志记录格式化逻辑优化:我们对内部的日志记录格式化处理进行了一些改进,使其更加高效和健壮。
  • 代码风格统一:对代码库进行了一些调整,以保持一致和清晰的代码风格。
  • 依赖更新与Bug修复 :更新了一些依赖项,并修复了社区报告的一些小问题。
    • github.com/gookit/gsr → v0.1.1
    • gookit/goutil → v0.7.1(更新相关包导入路径)
  • 升级 GitHub Actions 及其他依赖至最新版本,确保构建环境稳定性。

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

如何升级?

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

bash 复制代码
go get github.com/gookit/slog@v0.6.0
相关推荐
小杨同学495 分钟前
C 语言实战:动态规划求解最长公共子串(连续),附完整实现与优化
后端
Cache技术分享7 分钟前
290. Java Stream API - 从文本文件的行创建 Stream
前端·后端
用户948357016518 分钟前
拒绝 try-catch:如何设计全局通用的异常拦截体系?
后端
golang学习记11 分钟前
Go 1.22 隐藏彩蛋:cmp.Or —— 让“默认值”写起来像呼吸一样自然!
后端
阿里巴巴P8高级架构师11 分钟前
从0到1:用 Spring Boot 4 + Java 21 打造一个智能AI面试官平台
java·后端
桦说编程14 分钟前
并发编程踩坑实录:这些原则,帮你少走80%的弯路
java·后端·性能优化
小杨同学4916 分钟前
C 语言实战:枚举类型实现数字转星期(输入 1~7 对应星期几)
前端·后端
用户83071968408216 分钟前
Shiro登录验证与鉴权核心流程详解
spring boot·后端
码头整点薯条16 分钟前
基于Java实现的简易规则引擎(日常开发难点记录)
java·后端
Codelinghu24 分钟前
「 LLM实战 - 企业 」构建企业级RAG系统:基于Milvus向量数据库的高效检索实践
人工智能·后端·llm