Skip to content

Meir017/dotnet-logging-tools

Repository files navigation

dotnet-logging-tools

This library is mostly vibe coded using github-copilot with the Claude Sonnet 4 model in agent mode

Create a summary of which log messages a project writes and the parameters to improve consistency

LoggerUsage LoggerUsage Downloads - Core library for analyzing .NET logging usage patterns

LoggerUsage.Cli LoggerUsage.Cli Downloads - Command-line tool for generating HTML/JSON reports

LoggerUsage.Mcp LoggerUsage.Mcp Downloads - Model Context Protocol server for AI integrations

LoggerUsage.MSBuild LoggerUsage.MSBuild Downloads - MSBuild integration for workspace analysis

Background

This tool analyzes .NET projects to extract and summarize logging usage patterns. It supports the following logging APIs:

Supported Logging APIs

  • ILogger Extension Methods: Analyzes usage of LogInformation, LogWarning, LogError, LogDebug, LogTrace, and LogCritical extension methods
  • LoggerMessage Attribute: Detects and analyzes methods decorated with [LoggerMessage] attribute for high-performance logging
  • LoggerMessage.Define: Analyzes usage of LoggerMessage.Define methods for compile-time log message generation
  • Structured Logging: Captures parameter names and templates used in structured logging scenarios

The tool helps identify:

  • Inconsistent parameter naming across log messages
  • Most commonly used log parameters
  • Log level distribution across your codebase
  • Template patterns and message structures

Advanced Telemetry Features

The tool also provides advanced telemetry analysis capabilities:

  • Custom Tag Names: Detects and tracks custom tag names defined via [TagName] attribute for enhanced structured logging
  • Tag Providers: Analyzes tag providers using [TagProvider] attribute for dynamic tag generation and validates their configuration
  • Data Classification: Identifies data classification attributes (Public, Internal, Private, Sensitive) for compliance and redaction analysis
  • Transitive Properties: Analyzes nested properties when using [LogProperties(Transitive = true)] to track deep object hierarchies

These features enable:

  • Better observability through standardized tag naming
  • Compliance validation for sensitive data logging
  • Understanding of nested property structures in logs
  • Identification of tag provider validation issues

Usage

CLI

create HTML/JSON report:

dotnet run --project src/LoggerUsage.Cli -- <path-to-your-sln-or-csproj> <output-file-name>.<html/json>

Example report:

run the command:

dotnet run --project src/LoggerUsage.Cli -- src/LoggerUsage.Cli/LoggerUsage.Cli.csproj report.html

Logger Usage Report in light mode, showing summary cards, most common parameter names, and parameter name inconsistencies, with a light background and dark text for accessibility.

and in dark mode:

Logger Usage Report in dark mode, showing summary cards, most common parameter names, and parameter name inconsistencies, with a dark background and light text for accessibility.

Report Features

The generated reports include:

Summary Statistics:

  • Total log usages and parameter counts
  • Classification breakdown (Public, Internal, Private, Sensitive)
  • Telemetry features usage (custom tag names, tag providers, transitive properties)
  • Parameter name inconsistencies

Detailed Analysis:

  • Individual log usage details with file locations
  • Custom tag name mappings
  • Tag provider configurations and validation status
  • Nested property hierarchies for transitive analysis
  • Data classification annotations

Output Formats:

  • HTML: Interactive report with collapsible sections, dark mode support, and filtering capabilities
  • JSON: Structured data with schema version 2.0 for programmatic analysis
  • Markdown: Human-readable report suitable for documentation

Running the MCP Server Locally

To run the MCP server locally:

dotnet run --project src/LoggerUsage.Mcp

By default, the server will use the configuration in src/LoggerUsage.Mcp/appsettings.json. You can modify this file to adjust server settings as needed.

Progress Tracking

The MCP server supports progress tracking for long-running analysis operations. Clients can provide a progressToken parameter when calling the analyze_logger_usages_in_csproj tool to receive real-time progress updates.

Example Usage:

{
  "tool": "analyze_logger_usages_in_csproj",
  "parameters": {
    "fullPathToCsproj": "/path/to/project.csproj",
    "progressToken": "my-progress-token-123"
  }
}

When a progressToken is provided, the server will send notifications/progress messages with the following structure:

{
  "method": "notifications/progress",
  "params": {
    "progressToken": "my-progress-token-123",
    "progress": {
      "progress": 25,
      "total": 100,
      "message": "Analyzing project: 25% complete"
    }
  }
}

Features:

  • ✅ Optional parameter (backward compatible - works without progress token)
  • ✅ Real-time progress updates during analysis
  • ✅ Graceful error handling (progress failures don't interrupt analysis)
  • ✅ Low overhead (<5% performance impact)

For more information on MCP progress tracking, see the MCP Progress Documentation.

alt text

Roadmap

  • Add support for ILogger.Log method
  • Add support for ILogger.BeginScope method
  • Create a summary of the log messages
  • Integrate AI to suggest improvements and find inconsistencies
  • For LoggerMessageAttribute - find all invocations of method (see implementation plan)
  • Expose as a MCP

About

Create a summary of which log messages a project writes and the paramters to improve consistency

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •