elsa-core/src/modules/Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite
Sipke Schoorstra 550685ea3f
[codex] Add package manifest feature metadata (#7463)
* Add package manifest feature metadata

* Address package manifest review feedback

* Address structured log manifest defaults

* Use infrastructure attributes in manifests
2026-05-18 15:39:22 +02:00
..
Extensions
Features
Options
Services
ShellFeatures [codex] Add package manifest feature metadata (#7463) 2026-05-18 15:39:22 +02:00
Elsa.Diagnostics.StructuredLogs.Persistence.Sqlite.csproj
FodyWeavers.xml
README.md

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.