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
- Core library for analyzing .NET logging usage patterns
- Command-line tool for generating HTML/JSON reports
- Model Context Protocol server for AI integrations
- MSBuild integration for workspace analysis
This tool analyzes .NET projects to extract and summarize logging usage patterns. It supports the following logging APIs:
- ILogger Extension Methods: Analyzes usage of
LogInformation,LogWarning,LogError,LogDebug,LogTrace, andLogCriticalextension methods - LoggerMessage Attribute: Detects and analyzes methods decorated with
[LoggerMessage]attribute for high-performance logging - LoggerMessage.Define: Analyzes usage of
LoggerMessage.Definemethods 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
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
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.htmland in dark mode:
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
To run the MCP server locally:
dotnet run --project src/LoggerUsage.McpBy default, the server will use the configuration in src/LoggerUsage.Mcp/appsettings.json. You can modify this file to adjust server settings as needed.
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.
- Add support for
ILogger.Logmethod - Add support for
ILogger.BeginScopemethod - 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


