elsa-core/src/modules/Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite
2026-06-22 00:45:06 +02:00
..
Extensions Fix SQLite structured log shell lifecycle (#7461) 2026-05-18 01:04:04 +02:00
Features [codex] Add structured log SQLite persistence (#7445) 2026-05-13 15:57:06 +02:00
Options [codex] Add structured log SQLite persistence (#7445) 2026-05-13 15:57:06 +02:00
Services Fix SQLite structured log shell lifecycle (#7461) 2026-05-18 01:04:04 +02:00
ShellFeatures Remove PackageManifestCategories and update feature categories to inline strings 2026-06-08 09:48:55 +02:00
Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.csproj Resolve vulnerable transitive persistence packages 2026-06-22 00:45:06 +02:00
FodyWeavers.xml [codex] Add structured log SQLite persistence (#7445) 2026-05-13 15:57:06 +02:00
README.md [codex] Add structured log SQLite persistence (#7445) 2026-05-13 15:57:06 +02:00

Elsa Diagnostics Structured Logs SQLite Persistence

This package persists diagnostics structured log events to SQLite using the shared relational structured log store.

Configure

services.AddElsa(elsa =>
{
    elsa.UseStructuredLogs(structuredLogs =>
    {
        structuredLogs.UseSqliteStorage("Data Source=elsa-structured-logs.db", sqlite =>
        {
            sqlite.RunMigrationsOnStartup = true;
            sqlite.Relational.WriteQueue.Capacity = 10_000;
            sqlite.Relational.WriteQueue.BatchSize = 100;
        });
    });
});

SQLite migrations run on startup by default. Set RunMigrationsOnStartup to false when migrations are handled by deployment tooling.

Retention

SQLite storage does not delete persisted log entries by default. Configure retention explicitly:

sqlite.Relational.Retention.MaxAge = TimeSpan.FromDays(14);
sqlite.Relational.Retention.MaxRows = 250_000;
sqlite.Relational.Retention.CleanupOnStartup = true;

Write Queue

Writes are buffered through a bounded queue. Graceful shutdown flushes queued events where possible. If the queue is full, newest writes are dropped and IStructuredLogWriteBuffer.DroppedWriteCount reports the dropped-write count.

Provider Boundary

SQLite-specific services live in this package: connection factory, SQL dialect, FluentMigrator runner wiring, and startup migration/cleanup service. Shared relational behavior lives in Elsa.Diagnostics.StructuredLogs.Persistence.Relational.