Logging Categories¶
Whizbang uses .NET's standard ILogger infrastructure for all internal diagnostic logging. Each component writes to a named logging category that you can independently control via appsettings.json.
Quick Start¶
Silence noisy Whizbang components in development by adding overrides to your appsettings.Development.json:
Silence Noisy Categories
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Whizbang.Initialization": "None",
"Whizbang.Core.Dispatcher": "None",
"Whizbang.Core.Workers.PerspectiveWorker": "None",
"Whizbang.Core.Workers.TransportConsumerWorker": "None",
"Whizbang.Core.Workers.OutboxPublishWorker": "Warning",
"Whizbang.Transports.RabbitMQ": "Warning"
}
}
}
To temporarily re-enable a category for debugging, set it to "Debug":
Debug a Specific Category
Available Categories¶
Database Initialization¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Initialization |
Top-level database initialization orchestration — schema creation, migrations, constraints, perspective registration, and maintenance. Emits a summary line at Information with elapsed time and migration count; all step-level detail is at Debug. |
Information |
Whizbang.Startup |
Startup banner and one-time process identity output (WhizbangStartupLog). Suppress the banner via the Whizbang:ShowBanner configuration key instead of the log level if you only want the ASCII art gone. |
Information |
Dispatcher¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Dispatcher |
Dispatcher tag processing diagnostics — logs entry/exit of _processTagsIfEnabledAsync and tag processing mode decisions. |
Debug |
Whizbang.Core.Dispatcher.Cascade |
Event cascade tracing — logs when dispatched events trigger cascaded handler invocations. | Debug |
Workers¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Workers.PerspectiveWorker |
Perspective batch processing diagnostics — logs work item counts, stream/perspective grouping, and empty-batch warnings. | Debug |
Whizbang.Core.Workers.OutboxPublishWorker |
Outbox publish worker — startup/shutdown summary at Information; publish failures, DLQ promotions, and missing-transport conditions at Warning. |
Information |
Whizbang.Core.Workers.ClaimWorker |
Work-claim poller — startup/shutdown and NOTIFY-gate reconnects at Information; tick failures and heartbeat problems at Warning. |
Information |
Whizbang.Core.Workers.TransportConsumerWorker |
Transport consumer startup and subscription management. Logs a one-line summary at Information on start; per-destination and per-subscription detail at Debug. |
Information |
Transport¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Transports.RabbitMQ |
Parent category for all RabbitMQ transport logging. Set to Warning to silence startup chatter while retaining error visibility. |
Information |
Whizbang.Transports.RabbitMQ.RabbitMQTransport |
RabbitMQ connection lifecycle and per-subscription creation detail. | Debug |
Whizbang.Transports.RabbitMQ.RabbitMQConnectionRetry |
RabbitMQ connection establishment and retry attempts. | Information |
Whizbang.Transports.RabbitMQ.RabbitMQInfrastructureProvisioner |
RabbitMQ exchange and queue provisioning for owned domains. | Debug |
Messaging¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Messaging.ReceptorInvoker |
Receptor invocation — logs handler resolution and execution. | Debug |
Whizbang.Core.Messaging.ScopedWorkCoordinatorStrategy |
Scoped work coordinator — logs batch processing within DI scopes. | Information |
Whizbang.Core.Messaging.ImmediateWorkCoordinatorStrategy |
Immediate work coordinator — logs direct dispatch processing. | Information |
Whizbang.Core.Messaging.IntervalWorkCoordinatorStrategy |
Interval work coordinator — logs timer-based batch processing. | Information |
Tags & Security¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Tags.MessageTagProcessor |
Message tag processing — logs tag evaluation and notification dispatch. Can be very verbose in systems with tagged notifications. | Information |
Whizbang.Core.Security.SecurityContextHelper |
Security context propagation — logs JWT extraction and tenant resolution. | Information |
Whizbang.Core.Dispatch.DispatcherSecurityBuilder |
Security builder — logs security policy resolution during dispatch. | Debug |
Perspectives¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Perspectives.Sync.PerspectiveSyncAwaiter |
Synchronous perspective await — logs when dispatchers wait for perspective projections to complete before returning. | Information |
Tracing¶
| Category | Description | Default Level |
|---|---|---|
Whizbang.Core.Tracing.Tracer |
Structured trace output — controlled separately via TracingOptions. See Tracing for configuration. |
Information |
Hierarchical Filtering¶
.NET logging categories are hierarchical. Setting a parent category affects all children:
Silence All Whizbang Logging
This sets all categories starting with Whizbang to Warning, including Whizbang.Initialization, Whizbang.Core.Dispatcher, Whizbang.Transports.RabbitMQ, etc. You can then selectively re-enable specific categories:
Silence All, Enable One
Log Levels Reference¶
| Level | Use |
|---|---|
Trace |
Hot-path per-message breadcrumbs (e.g. ImmediateWorkCoordinatorStrategy dispatch steps) — off unless explicitly enabled |
Debug |
Step-level detail (individual migrations, SQL operations, batch grouping, per-subscription info) |
Information |
Summaries and milestones (initialization complete, worker started, batch sizes) |
Warning |
Recoverable issues (schema drift, failed maintenance, connection retries) |
Error |
Failures that abort an operation (migration failure, SQL errors) |
None |
Completely silent |
Recommended Development Configuration¶
A good starting point for local development that keeps the console readable:
Recommended Development Overrides
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning",
"Npgsql": "Warning",
"Whizbang.Initialization": "None",
"Whizbang.Core.Dispatcher": "None",
"Whizbang.Core.Workers.PerspectiveWorker": "None",
"Whizbang.Core.Workers.TransportConsumerWorker": "None",
"Whizbang.Core.Workers.OutboxPublishWorker": "Warning",
"Whizbang.Core.Tags.MessageTagProcessor": "None",
"Whizbang.Transports.RabbitMQ": "Warning"
}
}
}