mcpField
L
ln-771-logging-configurator

ln-771-logging-configurator

github.com/levnikolaevich開発584376 回インストール2 日前に更新
リポジトリ

ln-771-logging-configurator について

Serilog または structlog を使い、.NET と Python のプロジェクトに構造化ログを設定するスキルです。環境やユーザーの選択に合わせた設定を生成し、検証します。

主な機能

  1. 01.NET 向け Serilog 設定
  2. 02Python 向け structlog 設定
  3. 03環境別のログレベル設定
  4. 04リクエストログと属性付与
  5. 05設定と構文の検証

活用シーン

  1. 01ASP.NET Core プロジェクトへの構造化ログ追加
  2. 02FastAPI プロジェクトでの JSON ログ設定

MCP 対応

MCP ref と Context7 を使って Serilog と structlog の最新ドキュメントを参照し、設定を生成します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-771-logging-configurator

インストール後、Claude Code で/ln-771-logging-configuratorを入力して読み込まれたか確認します。

詳細

ln-771-logging-configurator

タイプ: L3 Worker カテゴリー: 7XX Project Bootstrap

.NET と Python のプロジェクト向けに、構造化 JSON ログを設定します。


概要

項目詳細
入力ln-770 からの Context Store
出力ログ設定ファイル
スタック.NET(Serilog)、Python(structlog)

フェーズ 1:コンテキストの受信

コーディネーターから Context Store を受け取ります。

必須コンテキスト:

  • STACK:.NET または Python
  • FRAMEWORK:ASP.NET Core または FastAPI
  • FRAMEWORK_VERSION:バージョン番号
  • PROJECT_ROOT:プロジェクトディレクトリのパス
  • ENVIRONMENT:Development または Production

検証:

  • STACK が指定されていない場合は、プロジェクトファイルから検出します
  • バージョンが指定されていない場合は、最新の安定版を使用します

フェーズ 2:最新のベストプラクティスを調査

MCP ツールを使用して、最新のドキュメントを取得します。

.NET(Serilog)の場合:

MCP ref: "Serilog ASP.NET Core structured logging configuration"
Context7: /serilog/serilog-aspnetcore

Python(structlog)の場合:

MCP ref: "structlog Python structured logging configuration"
Context7: /hynek/structlog

調査する主なパターン:

  1. リクエストログミドルウェア
  2. ログのエンリッチメント(相関 ID、ユーザーコンテキスト)
  3. 環境ごとのログレベル設定
  4. シンクの設定(Console、File、Seq、Elastic)

フェーズ 3:決定事項

設定の希望についてユーザーに確認します。

Q1:ログ形式
オプション使用する場面
JSON(本番環境に推奨)機械可読形式、ログ集約システム
Pretty/Colored(開発環境に推奨)人間が読みやすい形式、ローカルデバッグ
Q2:エンリッチメントフィールド
フィールド説明デフォルト
correlationIdサービス間でのリクエスト追跡✓ はい
userId認証済みユーザー識別子✓ はい
requestPathHTTP リクエストパス✓ はい
responseTimeリクエスト所要時間(ms)✓ はい
machineNameサーバーのホスト名オプション
threadIdスレッド識別子オプション
Q3:ログシンク
シンクユースケース
Console常に有効
Fileローカルでの永続化、ログローテーション
Seq構造化ログサーバー
Elasticsearch大規模なログ集約
Q4:環境ごとのログレベル
レベル開発環境本番環境
デフォルトDebugInformation
Microsoft.*InformationWarning
System.*InformationWarning
ApplicationDebugInformation

フェーズ 4:設定の生成

スタックと決定事項に基づいてファイルを生成します。

.NET の出力ファイル
ファイル目的
Extensions/LoggingExtensions.csサービス登録
appsettings.json(更新)Serilog の設定
appsettings.Development.json(更新)開発環境のオーバーライド

生成プロセス:

  1. MCP ref を使用して、現在の Serilog API を取得します
  2. 以下を含む LoggingExtensions.cs を生成します:
    • UseSerilog の設定
    • リクエストログミドルウェア
    • エンリッチメントの設定
  3. appsettings.json に Serilog セクションを追加します

追加するパッケージ:

  • Serilog.AspNetCore
  • Serilog.Sinks.Console
  • Serilog.Sinks.File(File シンクを選択した場合)
  • Serilog.Enrichers.Environment(machineName を選択した場合)
Python の出力ファイル
ファイル目的
core/logging_config.pystructlog の設定
middleware/logging_middleware.pyリクエストログ

生成プロセス:

  1. MCP ref を使用して、現在の structlog API を取得します
  2. 以下を含む logging_config.py を生成します:
    • プロセッサーチェーンの設定
    • レンダラーの選択(JSON/Console)
    • ログレベルの設定
  3. FastAPI 用の logging_middleware.py を生成します

追加するパッケージ:

  • structlog
  • python-json-logger(JSON 形式の場合)

フェーズ 5:検証

設定が機能することを確認します。

検証手順:

  1. インポートを確認: すべてのパッケージが利用可能であることを確認します

    • .NET:dotnet list package | grep Serilog
    • Python:pip list | grep structlog
  2. 構文を確認:

    • .NET:dotnet build --no-restore
    • Python:python -m py_compile core/logging_config.py
  3. ログ出力をテスト:

    • アプリケーションを起動します
    • テストリクエストを送信します
    • ログ形式が設定と一致することを確認します

想定されるログ形式:

{
  "timestamp": "2026-01-10T12:00:00.000Z",
  "level": "info",
  "message": "Request completed",
  "correlationId": "abc-123",
  "requestPath": "/api/health",
  "responseTime": 45,
  "statusCode": 200
}

コーディネーターに返す

結果を ln-770 に返します:

{
  "status": "success",
  "files_created": [
    "Extensions/LoggingExtensions.cs",
    "appsettings.json"
  ],
  "packages_added": [
    "Serilog.AspNetCore",
    "Serilog.Sinks.Console"
  ],
  "registration_code": "services.AddLoggingServices(configuration);",
  "message": "Configured structured logging with Serilog"
}

冪等性

このスキルは冪等です:

  • フェーズ 1:ロギングがすでに設定されているか確認します(Serilog/structlog を Grep で検索)
  • 設定済みの場合:{ "status": "skipped", "message": "Logging already configured" } を返します
  • 未設定の場合:設定を進めます

参考リンク


重要なルール

  • 最新の API には MCP ref/Context7 を使用する — Serilog/structlog の設定を記憶に頼ってハードコードしないでください
  • 冪等性を保つ — Serilog または structlog がすでに設定されている場合は、直ちに status: "skipped" を返します
  • 環境に応じたログレベル — Development では Debug、Production では Information を使用します(デフォルトに Warning を使用しないでください)
  • 必ず相関 ID のエンリッチメントを含める — 分散トレーシングに必要です
  • 構造化レスポンスを返す — コーディネーターで集約できるよう、files_created、packages_added、registration_code を含めます

完了の定義

  • Context Store を受け取り、検証済み(スタック、フレームワーク、バージョン)
  • 対象スタックのベストプラクティスを MCP ツールで調査済み
  • ユーザーの選択を収集済み(形式、エンリッチメント、シンク、ログレベル)
  • 設定ファイルを生成済み(拡張機能/設定ファイルと appsettings、または Python モジュール)
  • 構文を検証済み(dotnet build または py_compile)
  • 構造化 JSON レスポンスを ln-770 コーディネーターに返却済み

バージョン: 2.0.0 最終更新日: 2026-01-10

コメント