workleap-logging について
@workleap/logging は、Workleap のフロントエンドアプリ向け構造化ログライブラリです。スコープ付きのレベル別ブラウザーログを提供し、複数のロガーへの転送にも対応します。
主な機能
- 01スタイル対応のブラウザーコンソール出力
- 025 段階の重大度レベル
- 03バッファリングしてまとめるログスコープ
- 04テキスト、オブジェクト、エラーの連結
- 05複合ロガーによる転送
活用シーン
- 01複数段階の処理ログをまとめる
- 02コンテキスト付きのフロントエンドエラー記録
- 03複数ロガーへのログ転送
- 04重大度別の診断情報制御
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ workleap/ wl-logging --skill workleap-loggingインストール後、Claude Code で/workleap-loggingを入力して読み込まれたか確認します。
同梱ファイルreferences/api.mdreferences/patterns.md
詳細
Workleap Logging (@workleap/logging)
Workleap のフロントエンドアプリケーション向け構造化ロギングライブラリです。スコープ、複数のログレベル、テレメトリツールとの統合をサポートし、組み合わせ可能なスタイル付きコンソールログを提供します。
このライブラリは、4 つの主要な型をエクスポートします。Logger(基本インターフェース)、RootLogger(スコープをサポートする Logger の拡張型)、BrowserConsoleLogger、CompositeLogger です。
インストール
pnpm add @workleap/logging
基本概念
ロガー
- BrowserConsoleLogger:スタイル設定に対応したブラウザーコンソールへの出力
- CompositeLogger:ログを複数の基盤ロガーに転送します
- createCompositeLogger(verbose, loggers):
CompositeLoggerを作成するファクトリー関数です。verboseがtrueで、ロガーが指定されていない場合はBrowserConsoleLoggerを追加します。それ以外の場合は、渡されたロガーのみを使用します(空のリストを渡すと何も出力されません)。詳しくはreferences/api.mdを参照してください。
ログレベル(低い順)
debug- 開発時の詳細な診断情報information- アプリケーションの一般的な処理フローに関するイベントwarning- 対応が必要な、重大ではない問題error- 機能の完了を妨げる障害(本番環境でアラートが発生します)critical- データの整合性を脅かす重大なエラー
スコープ
スコープはログエントリーをメモリにバッファリングし、.end() が呼び出されるとグループ化されたブロックとして出力します。これにより、ノイズの多いコンソール出力でも複数ステップの操作を追跡しやすくなります。
const scope = logger.startScope("User signup");
scope.debug("Validating...");
scope.information("Signup complete");
scope.end();
Logger インターフェースは startScope を公開しません。スコープ管理はルートレベルの機能だからです。Squide の useLogger() を使用すると、戻り値の型は Logger になるため、スコープメソッドにアクセスするには RootLogger にキャストしてください。
import { useLogger } from "@squide/firefly";
import type { RootLogger } from "@workleap/logging";
const logger = useLogger();
(logger as RootLogger).startScope("User signup");
チェーンセグメント
セグメントをチェーンして複雑なログエントリーを作成できます。終端となるログレベルのメソッド(.debug()、.error() など)がないチェーンは、何も出力せずに終了します。これはログが出力されない原因として最もよくあるものです。
logger
.withText("Processing order")
.withObject({ orderId: 123 })
.withError(new Error("Failed"))
.error();
// Output: [error] Processing order { orderId: 123 } Error: Failed
よくある落とし穴
- 終端のログメソッドを呼び忘れる:
.debug()、.error()などがないセグメントのチェーンは、何も出力せずに終了します。 - スコープを終了しない:スコープ内のエントリーはメモリにバッファリングされ、
.end()が呼び出されたときにのみコンソールに出力されます。呼び出さないと、ログは何も出力されずに失われます。 - 障害に
warningを使用する:障害にはerrorを使用し、warningは重大ではない問題に使用します。本番環境でのアラートとログのフィルタリングは、重大度が正確であることに依存するため、この区別は重要です。 - 機密データをログに記録する:ログエントリーは LogRocket のセッションリプレイやブラウザーの開発者ツールに表示される可能性があるため、認証情報や個人を特定できる情報(PII)を含めると、コンプライアンス上およびセキュリティ上のリスクが生じます。
- エラーのコンテキストが不足している:関連データに
withObject()、例外にwithError()を使用しないと、エラーログに本番環境で問題を再現するために必要な情報が不足します。
リファレンスガイド
references/api.md— コンストラクターのシグネチャ、メソッド一覧(スタイル付きテキスト、改行、withObject、withError)、スコープのライフサイクル API、または createCompositeLogger の詳細を確認するときに参照してください。references/patterns.md— ロガーを一から設定するとき、LogRocket と統合するとき、機能や操作にスコープ付きロギングを実装するとき、またはロギングコードの PR レビューを行うときに参照してください。