8.5 KiB
8.5 KiB
Changelog
[1.1.10] - 2026-05-05
- 稳定性增强:
- 修复
TestSplitTag在秒级进位边界时的偶发性失败。优化后的测试逻辑同时校验日志产生前后的两个潜在时间槽,闭环消除了环境抖动导致的 race condition。
- 修复
[1.1.9] - 2026-05-05
- 稳定性增强:
- 改进
SplitTag测试用例,通过秒级切分步进,闭环验证了FileWriter的文件自动轮转逻辑,确保在高频或定时切分场景下的可靠性。
- 改进
[1.1.8] - 2026-05-05
- 深度脱敏与性能平衡:
- 引入“混合路径”序列化策略:对基础类型(String, Int, Bool 等)采用高性能手动编码,对复杂类型(Struct, Map, Slice)采用
cast.ToJSONDesensitizeBytes。 - 完美解决嵌套对象、数组内对象的深度脱敏问题,同时将序列化性能维持在极高水平。
- 引入“混合路径”序列化策略:对基础类型(String, Int, Bool 等)采用高性能手动编码,对复杂类型(Struct, Map, Slice)采用
- 基准测试优化: 相比全量
cast调用,混合路径将异步写入耗时降低了 60% 以上,内存分配减少了 70%。
[1.1.7] - 2026-05-05
- 极致精简与摩擦消除:
- 移除了所有冗余或已弃用的配置项:
Fast,KeepKeyCase,RegexSensitive,SensitiveRule。 - 删除了
Logger中未被使用的desensitization处理函数及SetDesensitization方法,进一步收窄 API。
- 移除了所有冗余或已弃用的配置项:
- 功能增强与修复:
- 脱敏逻辑闭环: 修复了
ToArrayBytes仅对 Map 字段脱敏的缺陷。现在支持对结构体根层级的敏感字段(如String类型)进行全量遮蔽。 - 标准化命名映射: 增强
fixField逻辑,同时支持自动忽略下划线 (_) 和横线 (-),确保SecretKey(Go) 与secret_key(Config) 能完美匹配。
- 脱敏逻辑闭环: 修复了
- 稳定性保障:
- 新增
functional_test.go,闭环验证了SplitTag文件切分能力与增强后的Sensitive脱敏逻辑。 - 优化
serializer.go内部判断逻辑,基准测试显示性能有显著提升。
- 新增
[1.1.6] - 2026-05-05
- 性能优化:
- 重构
FillBase方法签名,由接收接口LogEntry改为接收指针*BaseLog。 - 此项改动消除了在填充元数据时通过接口调用
GetBaseLog()的开销,直接操作结构体指针,进一步提升日志预处理性能。
- 重构
- 文档与示例对齐:
- 完善
README.md中的Config配置项说明,涵盖Fast,KeepKeyCase,Truncations,SensitiveRule等所有字段。 - 修正
BusinessLog扩展示例,确保与最新的FillBase签名及元数据填充逻辑保持一致。
- 完善
- 扩展与迁移指引: 同步更新
extra.go中的注释示例,为从旧版本或其他项目迁移提供准确的参考实现。
[1.1.5] - 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 恢复机制。