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 設施(kernusermaildaemonlocal07 等)
  • 基於日誌級別的自動優先級計算
  • 支援日誌記錄屬性的結構化數據
  • 與 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

致謝

我們感謝所有幫助實現此版本的貢獻者,包括那些報告問題、提交拉取請求和提供反饋的人。

有關完整的變更列表,請參閱更新日誌

9

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01976f50-c9ce-7c2a-bbc2-7dcf614c276b on your instance and reply to it.