5.9 KiB
5.9 KiB
Changelog
[1.1.4] - 2026-05-05
- 高性能 Meta 驱动架构:
- 日志存储格式由 JSON Object 彻底切换为 JSON Positional Array (
[...]),通过位置索引消除重复 Key 的存储与传输开销。 - 实现基于反射的 零装箱 (No-Boxing) 序列化,直接拼接 JSON 字符串,大幅降低内存分配与 CPU 占用。
- 日志存储格式由 JSON Object 彻底切换为 JSON Positional Array (
- 元数据外置与可视化:
- 引入
.log.meta.json机制,将字段顺序、颜色、格式化等可视化逻辑从核心包中剥离。 - 新增独立 CLI 工具
logv,支持基于元数据文件的 stdin 流式日志渲染。 - 改造
Viewable接口,支持基于 MetaRegistry 的动态终端彩色输出渲染。
- 引入
- 字段优化与压缩:
- 合并
ImageName/Tag为Image,合并ServerName/Ip为Server,精简日志槽位。 - 引入
hide:true标签,支持在控制台隐藏结构性元数据(如LogName,LogType),保持输出极致纯净。
- 合并
- 架构兼容性:
- 调整
Writer接口,支持自定义 Writer(如ESWriter)自行决定序列化格式(如转回 Object 以适配 ES 索引)。 utility.go新增对旧版 JSON 对象日志的解析兼容。
- 调整
- 安全加固: 为
http,db,redis,discover等子包同步添加.gitignore以排除自动生成的.log.meta.json。
[1.1.2] - 2026-05-05
- 架构解耦:
- 正式移除
log包对数据库日志(DB方法及DBLog结构)的内置支持,推动“日志格式随业务走”的架构对齐。 - 导出
GetCallStacks方法,支持外部包捕获符合截断配置的调用栈。
- 正式移除
- 内部优化:
fillBase回归私有,强化Log(entry)的自动填充契约,降低外部摩擦。
- 体验对齐:
- 修复
viewer.go中空错误字符串导致日志类型被跳过显示的 Bug。 Log方法集成fillBase自动补全逻辑,对于直接调用Log(entry)的自定义日志类型,若未设置时间戳则自动填充元数据,无需手动干预。
- 修复
- 生态同步: 依赖
config升级至 v1.0.5。
[1.1.0] - 2026-05-05
- 性能质变:
GetEntry改为泛型实现GetEntry[T](),消除reflect.Type传参及运行时类型断言。- 主路径零反射:增强
LogEntry接口,支持通过GetBaseLog()直接获取BaseLog指针,填充基础字段耗时降至 $O(1)$。 - 极速时间戳:
LogTime改为int64(纳秒),完全消除了日志写入时的time.Format开销。 FileWriter重构:采用单协程bufio无锁写入架构,支持 64KB 缓冲区与高性能文件轮转。
- 架构加固:
- 引入
logPayload路由包裹,彻底解决多 Logger 实例异步写入时的“串话”漏洞。 - 修复同步 Fallback 模式下的线程安全隐患。
- 引入
- 扩展恢复: 重新启用
extra.go中的标准日志结构(Request, DB, Task, Monitor, Statistic),并完成泛型化适配。 - 可视化优化: 重构
Viewable逻辑,基于strings.Builder和cast包优化 JSON 解析,渲染速度提升 2-3 倍。
[1.0.3] - 2026-05-05
- 接口规范化: 重构
Logger.Request方法,由传递结构体指针改为接收明确参数(method, path, status, usedTime),并支持通过extra自动填充RequestLog的 20+ 个业务字段。 - 架构解耦: 将
extra.go中的所有预定义日志结构及其快捷方法注释掉。仅作为示例供应用端参考实现,推动“应用自维护日志结构”的标准规范。 - 类型安全性: 强化
Logger.Log方法约束,仅接受实现LogEntry接口(通常继承自BaseLog)的类型,不再支持任意any格式。 - 文档完善:
README.md新增“自定义日志扩展”指南,明确了BaseLog继承、GetEntry对象池获取及Log发送的完整闭环。 - 测试对齐: 更新所有测试用例与基准测试,演示如何在应用端定义和使用自定义日志结构。
[1.0.2] - 2026-05-04
- 设计优化: 引入
ResetLogEntry自动化重置机制,基于反射和缓存实现日志对象字段的自动初始化与清空(Map/Slice 默认容量 8)。 - 接口精简: 简化
LogEntry接口为标记接口,移除了冗余的Base()和Reset()手动实现。 - 扩展性增强:
Task,Monitor,Statistic,DB等快捷方法全面支持变长extra ...any参数,并集成cast.ToMap自动转换。 - 构建修复: 修复了
convert模块对cast新 API 的兼容性问题。
[1.0.1] - 2026-05-04
- 结构增强:
DBLog结构体新增Error和CallStacks字段,提升数据库错误诊断效率。 - DB 方法重构:
Logger.DB方法支持可选错误参数,自动处理dbError类型并记录调用栈。 - 扩展日志支持: 新增
TaskLog,MonitorLog,StatisticLog标准结构及其Logger快捷方法,置于extra.go。 - RequestLog 封装:
Logger新增Request方法,简化请求日志记录流程。 - 调用栈优化: 优化
getCallStacks逻辑,确保能正确捕获业务代码和测试代码的调用位置,同时过滤掉日志库内部帧。
[1.0.0] - 2026-05-02
- 初始版本: 由
ssgo/log迁移并基于apigo.cc/go标准重构。 - 高性能引擎: 引入
LogEntry池化与sync.Pool复用,支持零分配日志对象。 - 异步写入: 实现基于 Channel 的非阻塞异步写入引擎,将 IO 压力从主路径完全剥离。
- 批量刷盘:
FileWriter引入bufio.Writer缓冲,ESWriter优化 Bulk 请求构造,大幅提升 IO 吞吐量。 - 灵活格式: 引入
Formatter接口,支持 JSON 与文本等自定义格式。 - 增强视图: 内置
ConsoleWriter与增强型Viewer,支持RequestLog高亮显示与状态码变色。 - 字段规范: 统一字段 Key 为小写,确保跨平台解析一致性。
- 安全性: 集成高性能字段脱敏能力,并提供幂等停机与 Panic 恢复机制。