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
致謝
我們感謝所有幫助實現此版本的貢獻者,包括那些報告問題、提交拉取請求和提供反饋的人。
有關完整的變更列表,請參閱更新日誌。