📋 变更日志
本项目的所有重要变更都将记录在此文件中。
格式基于 Keep a Changelog,本项目遵循 语义化版本。
[未发布]
新增
- 全面的多语言文档(7 种语言)
- GitHub issue 模板(错误报告、功能请求、问题)
- 带有构建标签兼容性检查的 Pull Request 模板
- 多语言贡献指南
- 带有执行准则的行为准则
- 带有漏洞报告流程的安全政策
- 带有示例的完整 API 文档
- 专业的项目结构和模板
变更
- 增强了 README,包含全面的功能文档
- 改进了所有构建标签配置的测试覆盖率
- 更新了项目结构以提高可维护性
文档
- 为所有主要文档添加了多语言支持
- 创建了全面的 API 参考
- 建立了贡献工作流程指南
- 实现了安全报告流程
[1.0.0] - 2024-01-01
新增
- 具有多日志级别的核心日志功能(Trace、Debug、Info、Warn、Error、Fatal、Panic)
- 带有对象池的线程安全日志器实现
- 构建标签支持(默认、调试、发布、丢弃模式)
- 带有默认文本格式化器的自定义格式化器接口
- 多写入器输出支持
- 用于高吞吐量场景的异步写入功能
- 自动按小时日志文件轮换
- 带有 goroutine ID 和跟踪 ID 跟踪的上下文感知日志
- 带有可配置堆栈深度的调用者信息
- 全局包级便捷函数
- Zap 日志器集成支持
性能
- 使用
sync.Pool 对条目对象和缓冲区进行对象池化
- 早期级别检查以避免昂贵的操作
- 用于非阻塞日志写入的异步写入器
- 针对不同环境的构建标签优化
构建标签
- 默认:具有调试消息的完整功能
- 调试:增强的调试信息和调用者详细信息
- 发布:生产优化,禁用调试消息
- 丢弃:最大性能,无操作日志操作
核心功能
- Logger:具有可配置级别、输出、格式化器的主日志器结构
- Entry:带有全面元数据的日志记录结构
- Levels:从 Panic(最高)到 Trace(最低)的七个日志级别
- Formatters:可插拔的格式化系统
- Writers:文件轮换和异步写入支持
- Context:Goroutine ID 和分布式跟踪支持
API 亮点
- 带有方法链的流畅配置 API
- 简单和格式化日志方法(
.Info() 和 .Infof())
- 用于隔离配置的日志器克隆
- 带有
CloneToCtx() 的上下文感知日志
- 前缀和后缀消息自定义
- 调用者信息切换
测试
- 覆盖率为 93.5% 的全面测试套件
- 多构建标签测试支持
- 自动化测试工作流程
- 性能基准测试
[0.9.0] - 2023-12-15
新增
- 初始项目结构
- 基本日志功能
- 基于级别的过滤
- 文件输出支持
变更
[0.8.0] - 2023-12-01
新增
修复
[0.7.0] - 2023-11-15
新增
- 用于条件编译的构建标签支持
- Trace 和调试级别日志
- 调用者信息跟踪
变更
[0.6.0] - 2023-11-01
新增
- 日志轮换功能
- 上下文感知日志
- Goroutine ID 跟踪
已弃用
[0.5.0] - 2023-10-15
新增
变更
移除
[0.4.0] - 2023-10-01
新增
- Fatal 和 Panic 级别日志
- 全局包函数
- 配置验证
修复
[0.3.0] - 2023-09-15
新增
变更
[0.2.0] - 2023-09-01
新增
修复
[0.1.0] - 2023-08-15
新增
- 初始发布
- 基本控制台日志
- 简单级别支持(Info、Warn、Error)
- 核心日志器结构
版本历史摘要
| 版本 |
发布日期 |
主要功能 |
| 1.0.0 |
2024-01-01 |
完整的日志系统、构建标签、异步写入、全面的文档 |
| 0.9.0 |
2023-12-15 |
性能改进、对象池 |
| 0.8.0 |
2023-12-01 |
多写入器、异步写入、自定义格式化器 |
| 0.7.0 |
2023-11-15 |
构建标签、Trace/调试级别、调用者信息 |
| 0.6.0 |
2023-11-01 |
日志轮换、上下文日志、goroutine 跟踪 |
| 0.5.0 |
2023-10-15 |
JSON 格式化器、多个输出、基准测试 |
| 0.4.0 |
2023-10-01 |
Fatal/Panic 级别、全局函数 |
| 0.3.0 |
2023-09-15 |
自定义级别、格式化器接口 |
| 0.2.0 |
2023-09-01 |
文件输出、级别过滤 |
| 0.1.0 |
2023-08-15 |
初始发布、基本控制台日志 |
迁移指南
从 v0.9.x 迁移到 v1.0.0
破坏性变更
可用的新功能
- 增强的构建标签支持
- 全面的文档
- 专业的项目模板
- 安全报告流程
推荐更新
// 旧方式(仍然支持)
logger := log.New()
logger.SetLevel(log.InfoLevel)
// 推荐的新方式,使用方法链
logger := log.New().
SetLevel(log.InfoLevel).
Caller(true).
SetPrefixMsg("[MyApp] ")
从 v0.8.x 迁移到 v0.9.x
破坏性变更
迁移步骤
-
如需要,更新导入路径
-
替换已弃用的方法:
// 旧的(已弃用)
logger.SetOutputFile("app.log")
// 新的
file, _ := os.Create("app.log")
logger.SetOutput(file)
从 v0.5.x 及更早版本迁移
主要变更
- 为更好的一致性完全重新设计 API
- 通过对象池增强性能
- 新的构建标签系统
需要迁移
- 将所有日志调用更新到新 API
- 审查并更新格式化器实现
- 使用新的构建标签配置进行测试
开发里程碑
🎯 v1.1.0 路线图(计划中)
🎯 v1.2.0 路线图(未来)
贡献
我们欢迎贡献!请查看我们的 贡献指南 了解以下详细信息:
- 报告错误和请求功能
- 代码提交流程
- 开发设置
- 测试要求
- 文档标准
安全
对于安全漏洞,请查看我们的 安全政策 了解:
支持
许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🌍 多语言文档
本变更日志提供多种语言版本:
跟踪每个改进并随时了解 LazygoPHers Log 的发展!🚀
本变更日志随每次发布自动更新。有关最新信息,请查看 GitHub Releases 页面。