ln-771-logging-configurator

安装量: 110
排名: #7723

安装

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

Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-770-crosscutting-setup

Configures structured JSON logging for .NET and Python projects.

Overview

| Input | Context Store from ln-770

| Output | Logging configuration files

| Stacks | .NET (Serilog), Python (structlog)

Phase 1: Receive Context

Accept Context Store from coordinator.

Required Context:

  • STACK: .NET or Python

  • FRAMEWORK: ASP.NET Core or FastAPI

  • FRAMEWORK_VERSION: Version number

  • PROJECT_ROOT: Project directory path

  • ENVIRONMENT: Development or Production

Validation:

  • If STACK not provided, detect from project files

  • If version not provided, use latest stable

Phase 2: Research Current Best Practices

Use MCP tools to get up-to-date documentation.

For .NET (Serilog):

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

For Python (structlog):

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

Key Patterns to Research:

  • Request logging middleware

  • Log enrichment (correlation ID, user context)

  • Log level configuration by environment

  • Sink configuration (Console, File, Seq, Elastic)

Phase 3: Decision Points

Ask user for configuration preferences.

Q1: Log Format

| JSON (Recommended for Production) | Machine-readable, log aggregation systems

| Pretty/Colored (Recommended for Development) | Human-readable, local debugging

Q2: Enrichment Fields

| correlationId | Request tracking across services | ✓ Yes

| userId | Authenticated user identifier | ✓ Yes

| requestPath | HTTP request path | ✓ Yes

| responseTime | Request duration in ms | ✓ Yes

| machineName | Server hostname | Optional

| threadId | Thread identifier | Optional

Q3: Log Sinks

| Console | Always enabled

| File | Local persistence, log rotation

| Seq | Structured log server

| Elasticsearch | Log aggregation at scale

Q4: Log Levels by Environment

| Default | Debug | Information

| Microsoft.* | Information | Warning

| System.* | Information | Warning

| Application | Debug | Information

Phase 4: Generate Configuration

Generate files based on stack and decisions.

.NET Output Files

| Extensions/LoggingExtensions.cs | Service registration

| appsettings.json (update) | Serilog configuration

| appsettings.Development.json (update) | Dev overrides

Generation Process:

  • Use MCP ref to get current Serilog API

  • Generate LoggingExtensions.cs with:

UseSerilog configuration

  • Request logging middleware

  • Enrichment configuration

  • Update appsettings.json with Serilog section

Packages to Add:

  • Serilog.AspNetCore

  • Serilog.Sinks.Console

  • Serilog.Sinks.File (if File sink selected)

  • Serilog.Enrichers.Environment (if machineName selected)

Python Output Files

| core/logging_config.py | structlog configuration

| middleware/logging_middleware.py | Request logging

Generation Process:

  • Use MCP ref to get current structlog API

  • Generate logging_config.py with:

Processor chain configuration

  • Renderer selection (JSON/Console)

  • Log level configuration

  • Generate logging_middleware.py for FastAPI

Packages to Add:

  • structlog

  • python-json-logger (if JSON format)

Phase 5: Validate

Verify the configuration works.

Validation Steps:

  • Check imports: Ensure all packages are available

.NET: dotnet list package | grep Serilog

  • Python: pip list | grep structlog

  • Syntax check:

.NET: dotnet build --no-restore

  • Python: python -m py_compile core/logging_config.py

  • Test log output:

Start application

  • Make test request

  • Verify log format matches configuration

Expected Log Format:

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

Return to Coordinator

Return result to 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"
}

Idempotency

This skill is idempotent:

  • Phase 1: Check if logging already configured (Grep for Serilog/structlog)

  • If configured: Return { "status": "skipped", "message": "Logging already configured" }

  • If not: Proceed with configuration

Version: 2.0.0 Last Updated: 2026-01-10

返回排行榜