ln-771-logging-configurator について
Serilog または structlog を使い、.NET と Python のプロジェクトに構造化ログを設定するスキルです。環境やユーザーの選択に合わせた設定を生成し、検証します。
主な機能
- 01.NET 向け Serilog 設定
- 02Python 向け structlog 設定
- 03環境別のログレベル設定
- 04リクエストログと属性付与
- 05設定と構文の検証
活用シーン
- 01ASP.NET Core プロジェクトへの構造化ログ追加
- 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 または PythonFRAMEWORK:ASP.NET Core または FastAPIFRAMEWORK_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
調査する主なパターン:
- リクエストログミドルウェア
- ログのエンリッチメント(相関 ID、ユーザーコンテキスト)
- 環境ごとのログレベル設定
- シンクの設定(Console、File、Seq、Elastic)
フェーズ 3:決定事項
設定の希望についてユーザーに確認します。
Q1:ログ形式
| オプション | 使用する場面 |
|---|---|
| JSON(本番環境に推奨) | 機械可読形式、ログ集約システム |
| Pretty/Colored(開発環境に推奨) | 人間が読みやすい形式、ローカルデバッグ |
Q2:エンリッチメントフィールド
| フィールド | 説明 | デフォルト |
|---|---|---|
correlationId | サービス間でのリクエスト追跡 | ✓ はい |
userId | 認証済みユーザー識別子 | ✓ はい |
requestPath | HTTP リクエストパス | ✓ はい |
responseTime | リクエスト所要時間(ms) | ✓ はい |
machineName | サーバーのホスト名 | オプション |
threadId | スレッド識別子 | オプション |
Q3:ログシンク
| シンク | ユースケース |
|---|---|
| Console | 常に有効 |
| File | ローカルでの永続化、ログローテーション |
| Seq | 構造化ログサーバー |
| Elasticsearch | 大規模なログ集約 |
Q4:環境ごとのログレベル
| レベル | 開発環境 | 本番環境 |
|---|---|---|
| デフォルト | Debug | Information |
| Microsoft.* | Information | Warning |
| System.* | Information | Warning |
| Application | Debug | Information |
フェーズ 4:設定の生成
スタックと決定事項に基づいてファイルを生成します。
.NET の出力ファイル
| ファイル | 目的 |
|---|---|
Extensions/LoggingExtensions.cs | サービス登録 |
appsettings.json(更新) | Serilog の設定 |
appsettings.Development.json(更新) | 開発環境のオーバーライド |
生成プロセス:
- MCP ref を使用して、現在の Serilog API を取得します
- 以下を含む LoggingExtensions.cs を生成します:
- UseSerilog の設定
- リクエストログミドルウェア
- エンリッチメントの設定
- appsettings.json に Serilog セクションを追加します
追加するパッケージ:
Serilog.AspNetCoreSerilog.Sinks.ConsoleSerilog.Sinks.File(File シンクを選択した場合)Serilog.Enrichers.Environment(machineName を選択した場合)
Python の出力ファイル
| ファイル | 目的 |
|---|---|
core/logging_config.py | structlog の設定 |
middleware/logging_middleware.py | リクエストログ |
生成プロセス:
- MCP ref を使用して、現在の structlog API を取得します
- 以下を含む logging_config.py を生成します:
- プロセッサーチェーンの設定
- レンダラーの選択(JSON/Console)
- ログレベルの設定
- FastAPI 用の logging_middleware.py を生成します
追加するパッケージ:
structlogpython-json-logger(JSON 形式の場合)
フェーズ 5:検証
設定が機能することを確認します。
検証手順:
-
インポートを確認: すべてのパッケージが利用可能であることを確認します
- .NET:
dotnet list package | grep Serilog - Python:
pip list | grep structlog
- .NET:
-
構文を確認:
- .NET:
dotnet build --no-restore - Python:
python -m py_compile core/logging_config.py
- .NET:
-
ログ出力をテスト:
- アプリケーションを起動します
- テストリクエストを送信します
- ログ形式が設定と一致することを確認します
想定されるログ形式:
{
"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
コメント
Markdown 対応