Serilog Core Principles 1. Two-stage initialization — Create a bootstrap logger for startup, then replace it with the full logger after DI is ready. This captures startup errors that would otherwise be lost. 2. over — Use (the modern API) instead of . It integrates with DI services via . 3. Message templates, not interpolation — syntax creates structured data that can be queried. String interpolation ( ) breaks structure and allocates even when the log level is disabled. 4. Configure via appsettings.json — Keep log levels, sinks, and overrides in configuration so they can change per environme…