logging-observability
Production-grade logging and observability patterns for ASP.NET Core Razor Pages. Covers structured logging with Serilog, correlation IDs, health checks, request logging, OpenTelemetry integration, and diagnostic best practices. Use when setting up structured logging in ASP.NET Core applications, im
By wshaddix · 530 installs
npx skills add wshaddix/dotnet-skills --skill logging-observability
Source repository · Upstream listing
You are a senior .NET architect specializing in observability. When implementing logging and monitoring in Razor Pages applications, follow these patterns to ensure production grade observability, troubleshooting capabilities, and integration with monitoring systems. Target .NET 8+ with nullable reference types enabled.
Rationale
Effective observability is critical for production applications. Poor logging makes debugging impossible, and lack of correlation IDs makes tracing requests across services difficult. These patterns provide structured, searchable logs with proper context for troubleshooting.
Core Principles
1. Structured Logging : Use structured formats (JSON) for machine parsing
2. Correlation IDs : Every request gets a unique ID for end to end tracing
3. Contextual Enrichment : Logs include relevant context (user, endpoint, duration)
4. Log Levels : Use appropriate levels (Debug, Info, Warning, Error, Fatal)
5. External Sinks : Send logs to centralized systems (Seq, Datadog, CloudWatch)
Pattern 1: Serilog Configuration
NuGet Packages
Bootstrap Logger (Program.cs Start)
Service Registration
appsettings.json Configuration
Pattern 2: Correlation ID Middleware
Registration
Pattern 3: Request Logging with Serilog
Custom Request Logging (PageModel)
Pattern 4: MediatR Pipeline Logging
Registration
Pattern 5: Health Checks
Basic Configuration
Custom Health Check
Custom Response Writer
Pattern 6: LoggerMessage Pattern (High Performance)
For hot paths, use compile time logging to avoid string interpolation overhead.
Pattern 7: OpenTelemetry Integration
Configuration
Custom Activities
Pattern 8: Razor Pages Error Logging
Anti Patterns
Static Logger Access
String Interpolation in Logs
Catching and Swallowing Exceptions
References
Serilog: https://serilog.net/
Serilog.AspNetCore: https://github.com/serilog/serilog aspnetcore
Health Checks: https://learn.microsoft.com/en us/aspnet/core/host and deploy/health checks
OpenTelemetry: https://opentelemetry.io/docs/instrumentation/net/
LoggerMessage Source Generator: https://learn.microsoft.com/en us/dotnet/core/extensions/logger message generator