📋 變更日誌
本專案的所有重要變更都將記錄在此檔案中。
格式基於 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 頁面。