mcpField
W
workleap-logging

workleap-logging

github.com/workleap開発040 回インストール3 日前に更新
リポジトリ

workleap-logging について

@workleap/logging は、Workleap のフロントエンドアプリ向け構造化ログライブラリです。スコープ付きのレベル別ブラウザーログを提供し、複数のロガーへの転送にも対応します。

主な機能

  1. 01スタイル対応のブラウザーコンソール出力
  2. 025 段階の重大度レベル
  3. 03バッファリングしてまとめるログスコープ
  4. 04テキスト、オブジェクト、エラーの連結
  5. 05複合ロガーによる転送

活用シーン

  1. 01複数段階の処理ログをまとめる
  2. 02コンテキスト付きのフロントエンドエラー記録
  3. 03複数ロガーへのログ転送
  4. 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 を参照してください。
ログレベル(低い順)
  1. debug - 開発時の詳細な診断情報
  2. information - アプリケーションの一般的な処理フローに関するイベント
  3. warning - 対応が必要な、重大ではない問題
  4. error - 機能の完了を妨げる障害(本番環境でアラートが発生します)
  5. 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

よくある落とし穴

  1. 終端のログメソッドを呼び忘れる:.debug()、.error() などがないセグメントのチェーンは、何も出力せずに終了します。
  2. スコープを終了しない:スコープ内のエントリーはメモリにバッファリングされ、.end() が呼び出されたときにのみコンソールに出力されます。呼び出さないと、ログは何も出力されずに失われます。
  3. 障害に warning を使用する:障害には error を使用し、warning は重大ではない問題に使用します。本番環境でのアラートとログのフィルタリングは、重大度が正確であることに依存するため、この区別は重要です。
  4. 機密データをログに記録する:ログエントリーは LogRocket のセッションリプレイやブラウザーの開発者ツールに表示される可能性があるため、認証情報や個人を特定できる情報(PII)を含めると、コンプライアンス上およびセキュリティ上のリスクが生じます。
  5. エラーのコンテキストが不足している:関連データに withObject()、例外に withError() を使用しないと、エラーログに本番環境で問題を再現するために必要な情報が不足します。

リファレンスガイド

  • references/api.md — コンストラクターのシグネチャ、メソッド一覧(スタイル付きテキスト、改行、withObject、withError)、スコープのライフサイクル API、または createCompositeLogger の詳細を確認するときに参照してください。
  • references/patterns.md — ロガーを一から設定するとき、LogRocket と統合するとき、機能や操作にスコープ付きロギングを実装するとき、またはロギングコードの PR レビューを行うときに参照してください。

コメント