LogTape 0.12.0 發布說明

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape 是一個零依賴的 JavaScript 和 TypeScript 日誌記錄庫,提供簡單而靈活的日誌系統。它支援多種 JavaScript 運行環境(Deno、Node.js、Bun、瀏覽器和邊緣函數),具有層次化分類、結構化日誌記錄功能,並為應用程式和函式庫提供無縫整合。
0.12.0 版本新功能
Trace 日誌級別
LogTape 現在包含 trace 嚴重性級別,它在詳細程度層次中位於 debug 之下。這項新增功能提供了更精細的日誌輸出控制,特別適用於開發和除錯期間詳細執行流程追蹤。
- 在 LogLevel聯合類型中新增"trace"
- 新增 Logger.trace()方法用於記錄 trace 級別的訊息
- 完整的嚴重性層次現在是:trace<debug<info<warning<error<fatal
增強檔案接收器效能
檔案接收器現在支援可設定的緩衝,大幅提升高容量日誌記錄場景的寫入效能。
- 新增 bufferSize選項(預設:8192 字元)以控制寫入緩衝行為
- 新增 flushInterval選項(預設:5000 毫秒)用於自動基於時間的緩衝區清空
- 將 bufferSize設為 0 可不使用緩衝立即寫入
- 將 flushInterval設為 0 可停用基於時間的緩衝區清空
- 當接收器被釋放時,緩衝區內容會自動清空
這些選項適用於 getFileSink() 和 getRotatingFileSink() 函數。
Syslog 支援
新的 @logtape/syslog 套件可以使用 RFC 5424 格式將日誌訊息發送到 syslog 伺服器。
- 支援 UDP 和 TCP 協議
- 所有標準 RFC 5424 設施(kern、user、mail、daemon、local0–7等)
- 基於日誌級別的自動優先級計算
- 支援日誌記錄屬性的結構化數據
- 與 Deno、Node.js 和 Bun 的跨運行環境兼容性
- 可設定的連接逾時、自訂主機名和應用程式名稱
Logger 方法別名
新增 Logger.warning() 作為 Logger.warn() 的別名,以確保與 LogLevel 類型定義的一致性。這項變更解決了命名不匹配的問題,即 LogLevel 聯合類型使用 "warning" 而 logger 方法命名為 warn(),使元程式設計和動態方法調用更加直觀。
統一套件發布
從 0.12.0 版本開始,所有 LogTape 套件,包括 @logtape/otel、@logtape/sentry 和 @logtape/syslog 共享相同的版本號並一起發布。這確保了套件之間的兼容性,並簡化了使用者的版本管理。
改進的建構基礎設施
LogTape 已從 dnt 遷移到 tsdown 進行 npm 套件打包。tsdown 是一個專注於函式庫的打包工具,建立在 Rolldown 之上,Rolldown 是一個基於 Rust 的打包工具,為下一代 Vite 提供動力。與通用打包工具不同,tsdown 專門針對構建 TypeScript 和 JavaScript 函式庫進行了優化,只需最少的配置。這項變更帶來了幾個好處:
- 消除了 Webpack、Vite 和其他建構工具中的打包警告
- 提高了與現代 JavaScript 工具鏈的兼容性
- 更好的 tree-shaking 支援
- 更乾淨的套件輸出
- 通過基於 Rust 的效能優化實現更快的建構時間
遷移指南
更新到 Trace 級別
如果您的程式碼依賴於 debug 作為最低嚴重性級別,您可能需要更新您的日誌級別配置:
// 之前
{ lowestLevel: "debug" }  // 這是最詳細的設定
// 之後
{ lowestLevel: "trace" }  // 現在包含 trace 訊息利用緩衝區配置
要在高吞吐量場景中優化檔案接收器效能:
getFileSink("app.log", {
  bufferSize: 16384,      // 更大的緩衝區以提高效能
  flushInterval: 10_000    // 每 10 秒清空一次
})安裝
LogTape 0.12.0 可在 JSR 和 npm 上獲取:
deno add jsr:@logtape/logtape  # Deno
npm  add     @logtape/logtape  # npm
pnpm add     @logtape/logtape  # pnpm
yarn add     @logtape/logtape  # yarn
bun  add     @logtape/logtape  # Bun對於 syslog 接收器:
deno add jsr:@logtape/syslog  # Deno
npm  add     @logtape/syslog  # npm
pnpm add     @logtape/syslog  # pnpm
yarn add     @logtape/syslog  # yarn
bun  add     @logtape/syslog  # Bun致謝
我們感謝所有幫助實現此版本的貢獻者,包括那些報告問題、提交拉取請求和提供反饋的人。
有關完整的變更列表,請參閱更新日誌。