LogTape 0.11.0 リリースノート

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape は、すべてのランタイムで動作する JavaScript と TypeScript 向けの依存関係のないロギングライブラリです。
LogTape 0.11.0 のリリースを発表できることを嬉しく思います。この新バージョンでは、構造化ロギング機能に大幅な強化が施され、より良いログ処理のための新しい JSON Lines フォーマッタが追加されました。
新機能と強化点
強化された構造化ロギング
LogTape 0.11.0 では、構造化ロギングに大幅な改善が加えられ、ログ内の構造化データの扱いがより簡単で柔軟になりました。
直接オブジェクトロギング
任意のログメソッドの最初の引数としてオブジェクトを渡すことで、構造化データを直接ログに記録できるようになりました:
logger.info({
userId: 123456,
username: "johndoe",
loginTime: new Date(),
});
これにより、オブジェクトのプロパティが構造化フィールドとしてログエントリに作成され、ログの機械可読性と検索性が向上します。
{*}
による汎用プロパティ補間
新しい特殊プレースホルダー {*}
を使用すると、構造化データのすべてのプロパティを一度に補間できます:
logger.info("User logged in with properties {*}", {
userId: 123456,
username: "johndoe",
loginTime: new Date(),
});
これは、メッセージテンプレートで各プロパティを明示的に名前付けせずに、利用可能なすべてのコンテキストを含めたい場合に特に便利です。
合理化されたロギングメソッド
すべてのロギングメソッド(debug
、info
、warn
、error
、fatal
)が、{*}
プレースホルダーを使用した構造化ロギングの便利な省略形として、新しいオブジェクト優先構文をサポートするようになりました。
JSON Lines フォーマッタ
LogTape に、現代のアプリケーションにおける構造化ロギングの人気の選択肢である JSON Lines(JSONL または NDJSON としても知られる)形式の組み込みサポートが追加されました:
import { jsonLinesFormatter } from "@logtape/logtape";
import { getFileSink } from "@logtape/file";
await configure({
sinks: {
jsonl: getFileSink("app.jsonl", {
formatter: jsonLinesFormatter
}),
},
// ... 残りの設定
});
JSON Lines フォーマッタは、各ログレコードを別々の行に JSON オブジェクトとして出力するため、ログ集約システムや分析ツールに最適です。
カスタマイズ可能な JSON Lines オプション
新しい getJsonLinesFormatter()
関数はいくつかのカスタマイズオプションを提供します:
- カテゴリセパレータ:階層的カテゴリの結合方法を制御
- メッセージフォーマット:生のテンプレートとレンダリングされたメッセージの選択
- プロパティ処理:プロパティのフラット化、ネスト化、またはカスタムプレフィックスの付加
後方互換性
既存のすべてのロギングパターンは、以前とまったく同じように動作し続けます。新機能は追加的なものであり、既存のコードを破壊することはありません。
なぜこれが重要か
これらの強化により、LogTape は現代のアプリケーションロギングにおいてさらに強力になります:
- より良い可観測性:構造化データによりログの検索性と分析性が向上
- 改善された開発者体験:複雑なオブジェクトをログに記録する際のボイラープレートコードが減少
- 業界標準フォーマット:ログ管理システムとのより良い統合のための JSON Lines サポート
- 柔軟なフォーマット:インフラストラクチャのニーズに合わせた出力のカスタマイズ
インストール
LogTape 0.11.0 は JSR と npm の両方で利用可能です:
deno add jsr:@logtape/logtape@0.11.0
npm add @logtape/logtape@0.11.0
pnpm add @logtape/logtape@0.11.0
yarn add @logtape/logtape@0.11.0
bun add @logtape/logtape@0.11.0
詳細情報
これらの新機能があなたのロギング体験を向上させることを願っています。いつものように、LogTape は依存関係がなく、すべての JavaScript ランタイムで動作します。
ハッピーロギング!