mcpField
L
logdigest

logdigest

ローカル
github.com/CloudCorpRecords開発ツール06 日前に更新

logdigest について

logdigest は CI やテストのログから検出可能な失敗の証拠を抽出し、近接する行をまとめて元の行番号を保持します。長いログを確認する開発者向けです。パターン検出で情報を絞り込みますが、根本原因の診断は行いません。

主な機能

  1. 01テスト失敗、エラー、非ゼロ終了の検出
  2. 02近接する一致行のセクション化
  3. 03元の行番号の保持
  4. 04スタックのコンテキスト取得
  5. 05JSON または可読形式で出力

活用シーン

  1. 01長い CI ログから失敗箇所を確認
  2. 02失敗したテストとスタックの文脈を特定
  3. 03ダイジェストから元ログの行へ移動

MCP 対応

MCP サーバーは `digest_log` ツールを公開し、ログファイルのパスを受け取って CLI の JSON 出力と同じレポートを返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-logdigest": {
"command": "npx",
"args": [
"-y",
"@reneturcios/logdigest"
]
}
}
}
起動コマンドnpx -y @reneturcios/logdigest

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/logdigest0.1.0
ocighcr.io/cloudcorprecords/logdigest:0.1.0

ツール

1

掲載時のツール一覧 · 6 日前に更新

パラメーター型必須説明
pathstringはい確認する対象パス

詳細

logdigest

ログファイルを失敗の証拠に絞り込みます。

CI やテストのログは1万行に及ぶことがありますが、誰もが読むのは、失敗したテスト、エラー行、スタック、ゼロ以外の終了コードといった、いくつかの失敗セクションだけです。logdigest はログファイルを読み込み、該当する行を見つけ、元の行番号とともにセクションごとにまとめ、1画面で読めるダイジェストを出力します。失敗セクションが見つかった場合は FAILURES-FOUND、見つからなかった場合は NO-FAILURES の判定を報告します。

インストール

npx @reneturcios/logdigest digest build.log

または、グローバルにインストールします。

npm install -g @reneturcios/logdigest

Node 20 以降が必要です。

CLI

logdigest digest [file] [--json]
logdigest mcp
logdigest --version
  • logdigest digest <file> は、人が読みやすいダイジェストを出力します。
  • logdigest digest <file> --json は、完全なレポートを JSON 形式で出力します。
  • logdigest mcp は、stdio 経由で MCP サーバーを実行します(下記参照)。
  • logdigest --version は、バージョンを出力します。

終了コード:判定が NO-FAILURES の場合は 0、判定が FAILURES-FOUND の場合は 1、使用方法または読み込みエラーの場合(対象がディレクトリである、または読み取れない場合など)は 2、読み取り側が出力パイプを早期に閉じた場合は 141 です。

ダイジェストの例:

logdigest digest test.log: FAILURES-FOUND
  2 failure section(s) found in 28 line(s): 9 matched line(s).
  [HIGH] TEST-FAIL lines 5-16
FAIL src/math.test.ts
    AssertionError: expected 3 to be 4
        at Object.<anonymous> (src/math.test.ts:10:11)
  totals: total lines 28, matched lines 9, sections 2, overflow sections 0
  by rule: TEST-FAIL 8, ERROR-LINE 1, EXIT-NONZERO 0

(上記の例は短縮されています。実際のダイジェストには、すべてのセクションで取得された行がすべて出力されます。)

MCP

同じバイナリが MCP サーバーとして動作します。

npx @reneturcios/logdigest mcp

以下のツールを公開します。

  • path 引数(確認するログファイル)を受け取る digest_log。CLI の --json 出力と同じレポートを返します。

検出対象

パターンに基づいて検出します。該当する各行には、必ず1つのルールが割り当てられます。複数のパターンに一致する場合は、最も具体的なルールが優先されます(TEST-FAIL、EXIT-NONZERO、ERROR-LINE の順)。

ルールパターン備考
TEST-FAILFAIL 、failing という単語(例:ランナーのサマリーにある 2 failing)、✕、× 、not ok (TAP)、AssertionError、および expected ... to ... という形式テストランナーの失敗とアサーションの失敗
ERROR-LINE大文字・小文字を問わない error という単語、Error:、ERR!、fatal:、panic、Traceback、ExceptionPython のトレースバックや npm の ERR! 行など、一般的なエラーの証拠
EXIT-NONZEROゼロ以外の数値が続く exit code または exited with code、および command failed というフレーズ終了コードが 0 の場合は一致しません

セクションと判定の仕組み

  • 一致した行の間隔が3行以内の場合、1つのセクションにまとめられます。それより間隔が広い場合は、新しいセクションが始まります。
  • スタックの先頭(Traceback 行、実行中のスタックの最初の at 行、または直後にスタック行が続く一致行)の後は、最大5行をコンテキストとして追加取得し、スタックの先頭がダイジェストに残るようにします。次のセクションに入ることはありません。
  • 各セクションは1つの検出結果になります。line はセクションの最初の行番号、evidence は最初に一致した行です。また、検出結果には endLine と取得した sectionLines も含まれます。
  • スタックの先頭またはアサーションを含む TEST-FAIL または ERROR-LINE のセクションの重大度は high、それ以外は medium です。空のログでは、ルールが EMPTY-LOG の info 検出結果が1つ生成されます。
  • レポートには、totalLines、matchedLines、sections(実際に出力されたセクション)、sectionsTotal、overflowSections と、ルールごとの件数が含まれます。
  • 判定:セクションが1つ以上ある場合は FAILURES-FOUND、それ以外は NO-FAILURES です。空のログは、上記の EMPTY-LOG 検出結果を含む NO-FAILURES になります。
  • 検出結果は最大200セクションです。上限を超えたセクションは出力されませんが、レポートで黙って切り捨てられることがないよう、overflowSections に件数が記録されます。
  • 人が読みやすいダイジェストでは、各セクションの行範囲に続けて、取得した行をそのまま(各行200文字に制限して)出力し、その後に合計を表示します。出力は決定的です。タイムスタンプは含まず、ファイルの内容だけで決まります。

制限事項

  • 検出はパターンベースのため、上の表にあるパターンに当てはまらない、これまでにない言い回しのエラーは見逃されることがあります。 NO-FAILURES という判定は「既知のエラーパターンが見つからなかった」という意味であり、実行が成功したことを証明するものではありません。
  • logdigest は要約を行いますが、診断は行いません。エラー行とその直近のコンテキストを提示しますが、提示された行を超える根本原因の分析は読者に委ねられます。
  • 出力されるのは最初の 200 セクションのみ(残りは件数のみ表示)で、整形された各行は 200 文字に切り詰められます。そのため、ダイジェストは元のログを読むための手掛かりであり、ログのコピーではありません。元の行番号は常に保持されるため、ソースログで各セクションを見つけられます。

開発

npm install
npm run build
npm test

コア部分は src/core.ts にあり、Node の標準ライブラリのみを使用します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。