CloudStorageORM includes optional observability controls under CloudStorageOptions.Observability.
EnableLoggingcontrols runtimeILoggeremission from shared save/query/transaction/recovery paths.EnableTracingcontrolsActivitySourcespans created by CloudStorageORM internals.EnableDiagnosticsis part of the public options model and EF debug info, but there are currently no customDiagnosticListenerevents emitted yet.
All observability toggles default to true:
EnableLogging = trueEnableTracing = trueEnableDiagnostics = true
services.AddDbContext<AppDbContext>(options =>
{
options.UseCloudStorageOrm(storage =>
{
storage.Provider = CloudProvider.Azure;
storage.ContainerName = "sampleapp-container";
storage.Azure.ConnectionString = "UseDevelopmentStorage=true";
// Optional observability controls
storage.Observability.EnableLogging = true;
storage.Observability.EnableTracing = true;
storage.Observability.EnableDiagnostics = true;
// Naming options are currently surfaced in options/debug info.
storage.Observability.ActivitySourceName = "CloudStorageORM";
storage.Observability.DiagnosticListenerName = "CloudStorageORM";
});
});storage.Observability.EnableLogging = true;
storage.Observability.EnableTracing = true;
storage.Observability.EnableDiagnostics = true;storage.Observability.EnableLogging = false;
storage.Observability.EnableTracing = true;
storage.Observability.EnableDiagnostics = false;storage.Observability.EnableLogging = false;
storage.Observability.EnableTracing = false;
storage.Observability.EnableDiagnostics = false;CloudStorageORM logs through standard ILogger infrastructure. Configure filters as usual:
builder.Logging.AddConsole();
builder.Logging.AddFilter("CloudStorageORM", LogLevel.Information);CloudStorageORM emits Activity spans from source name CloudStorageORM.
Simple listener example:
var listener = new ActivityListener
{
ShouldListenTo = source => source.Name == "CloudStorageORM",
Sample = static (ref ActivityCreationOptions<ActivityContext> _) => ActivitySamplingResult.AllData,
SampleUsingParentId = static (ref ActivityCreationOptions<string> _) => ActivitySamplingResult.AllData
};
ActivitySource.AddActivityListener(listener);OpenTelemetry pipelines can subscribe to the same source name.
CloudStorageORM event IDs are grouped by category in CloudStorageOrmEventIds:
- Configuration (
100x) - Query (
200x) - Save/persistence (
300x) - Transactions (
400x) - Concurrency (
500x) - Provider I/O (
600x) - Validation (
700x)
Runtime paths currently emitting these event groups include:
CloudStorageDatabasesave and materialization/listing boundariesCloudStorageQueryProviderquery execution boundariesCloudStorageTransactionManagerbegin/commit/rollback/recovery and durable replay pathsCloudStorageDbContextconfiguration/validation initialization boundaries