📋 變更日誌

本專案的所有重要變更都將記錄在此檔案中。

格式基於 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 追蹤

已棄用

  • 舊的設定方法(將在 v1.0.0 中移除)

[0.5.0] - 2023-10-15

新增

  • JSON 格式化器
  • 多個輸出目標
  • 效能基準測試

變更

  • 重構了核心日誌引擎
  • 改進了 API 一致性

移除

  • 舊的日誌方法

[0.4.0] - 2023-10-01

新增

  • Fatal 和 Panic 層級日誌
  • 全局套件函式
  • 設定驗證

修復

  • 輸出同步問題
  • 記憶體使用最佳化

[0.3.0] - 2023-09-15

新增

  • 自訂日誌層級
  • 格式化器介面
  • 執行緒安全操作

變更

  • 簡化了 API 設計
  • 增強了文件

[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

破壞性變更

  • 無 - v1.0.0 與 v0.9.x 向後相容

可用的新功能

  • 增強的建置標籤支援
  • 全面的文件
  • 專業的專案模板
  • 安全報告流程

推薦更新

// 舊方式(仍然支援)
logger := log.New()
logger.SetLevel(log.InfoLevel)

// 推薦的新方式,使用方法鏈結
logger := log.New().
    SetLevel(log.InfoLevel).
    Caller(true).
    SetPrefixMsg("[MyApp] ")

從 v0.8.x 遷移到 v0.9.x

破壞性變更

  • 移除了已棄用的設定方法
  • 更改了內部緩衝區管理

遷移步驟

  1. 如需要,更新匯入路徑

  2. 替換已棄用的方法:

    // 舊的(已棄用)
    logger.SetOutputFile("app.log")
    
    // 新的
    file, _ := os.Create("app.log")
    logger.SetOutput(file)

從 v0.5.x 及更早版本遷移

主要變更

  • 為更好的一致性完全重新設計 API
  • 透過物件池增強效能
  • 新的建置標籤系統

需要遷移

  • 將所有日誌呼叫更新到新 API
  • 審查並更新格式化器實作
  • 使用新的建置標籤設定進行測試

開發里程碑

🎯 v1.1.0 路線圖(計畫中)

  • 帶有鍵值對的結構化日誌
  • 高量場景的日誌採樣
  • 用於自訂輸出的外掛系統
  • 增強的效能指標
  • 雲端日誌整合

🎯 v1.2.0 路線圖(未來)

  • 設定檔案支援(YAML/JSON/TOML)
  • 日誌聚合和過濾
  • 即時日誌串流
  • 增強的安全功能
  • 效能儀表板整合

貢獻

我們歡迎貢獻!請查看我們的 貢獻指南 了解以下詳細資訊:

  • 報告錯誤和請求功能
  • 程式碼提交流程
  • 開發設定
  • 測試需求
  • 文件標準

安全

對於安全漏洞,請查看我們的 安全政策 了解:

  • 支援的版本
  • 報告流程
  • 回應時間線
  • 安全最佳實務

支援

授權條款

本專案採用 MIT 授權條款 - 查看 LICENSE 檔案了解詳情。


🌍 多語言文件

本變更日誌提供多種語言版本:


追蹤每個改進並隨時了解 LazygoPHers Log 的發展!🚀


本變更日誌隨每次發布自動更新。有關最新資訊,請查看 GitHub Releases 頁面。