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