Skip to content

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

{
  "Logging": {
    "LogLevel": {
      "Whizbang.Initialization": "Debug"
    }
  }
}

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

{
  "Logging": {
    "LogLevel": {
      "Whizbang": "Warning"
    }
  }
}

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

{
  "Logging": {
    "LogLevel": {
      "Whizbang": "None",
      "Whizbang.Initialization": "Information"
    }
  }
}

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

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"
    }
  }
}