LogTape 0.12.0 リリースノート

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape は JavaScript と TypeScript 向けの依存関係のないロギングライブラリで、シンプルかつ柔軟なロギングシステムを提供します。複数の JavaScript ランタイム(Deno、Node.js、Bun、ブラウザ、エッジ関数)をサポートし、階層的カテゴリ、構造化ロギングを特徴とし、アプリケーションとライブラリの両方にシームレスに統合できます。

0.12.0 の新機能

トレースログレベル

LogTape に trace 重要度レベルが追加されました。これは詳細度階層において debug より下に位置します。この追加により、特に開発やデバッグ中の詳細な実行フロー追跡に役立つ、よりきめ細かいロギング出力の制御が可能になります。

  • LogLevel ユニオン型に "trace" を追加
  • トレースレベルのメッセージをロギングするための Logger.trace() メソッドを追加
  • 完全な重要度階層は現在: trace < debug < info < warning < error < fatal

ファイルシンクのパフォーマンス強化

ファイルシンクが設定可能なバッファリングをサポートするようになり、大量ロギングシナリオでの書き込みパフォーマンスが大幅に向上しました。

  • 書き込みバッファリング動作を制御する bufferSize オプション(デフォルト: 8192文字)を追加
  • 自動的な時間ベースのバッファフラッシュのための flushInterval オプション(デフォルト: 5000ms)を追加
  • バッファリングなしで即時書き込みを行うには bufferSize を 0 に設定
  • 時間ベースのフラッシュを無効にするには flushInterval を 0 に設定
  • シンクが破棄されるとバッファの内容は自動的にフラッシュされます

これらのオプションは getFileSink()getRotatingFileSink() 関数の両方で利用できます。

Syslog サポート

新しい @logtape/syslog パッケージにより、RFC 5424 形式を使用して syslog サーバーにログメッセージを送信できるようになりました。

  • UDP と TCP プロトコルの両方をサポート
  • すべての標準 RFC 5424 ファシリティ(kernusermaildaemonlocal07 など)
  • ログレベルに基づく優先度の自動計算
  • ログレコードプロパティのための構造化データサポート
  • Deno、Node.js、Bun とのクロスランタイム互換性
  • 設定可能な接続タイムアウト、カスタムホスト名、アプリケーション名

ロガーメソッドのエイリアス

LogLevel 型定義との一貫性を確保するために、Logger.warn() のエイリアスとして Logger.warning() を追加しました。この変更により、LogLevel ユニオン型が "warning" を使用しているのに対し、ロガーメソッドが warn() と名付けられていた命名の不一致が解消され、メタプログラミングと動的メソッド呼び出しがより簡単になります。

統一パッケージリリース

バージョン 0.12.0 から、@logtape/otel@logtape/sentry@logtape/syslog を含むすべての LogTape パッケージは同じバージョン番号を共有し、一緒にリリースされるようになりました。これによりパッケージ間の互換性が確保され、ユーザーのバージョン管理が簡素化されます。

ビルドインフラストラクチャの改善

LogTape は npm パッケージのバンドルに dnt から tsdown に移行しました。tsdown は、次世代の Vite を支える Rust ベースのバンドラーである Rolldown の上に構築されたライブラリ重視のバンドラーです。汎用バンドラーとは異なり、tsdown は最小限の設定で TypeScript と JavaScript ライブラリを構築するために特別に最適化されています。この変更により、いくつかの利点がもたらされます:

  • Webpack、Vite、その他のビルドツールでのバンドラー警告の排除
  • 最新の JavaScript ツールチェーンとの互換性向上
  • より良いツリーシェイキングのサポート
  • よりクリーンなパッケージ出力
  • Rust ベースのパフォーマンス最適化による高速なビルド時間

移行ガイド

トレースレベルへの更新

debug が最低の重要度レベルであることに依存するコードがある場合、ログレベルの設定を更新する必要があるかもしれません:

// 以前
{ lowestLevel: "debug" }  // これが最も詳細な設定でした

// 現在
{ lowestLevel: "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.