elsa-core/specs/004-diagnostics-structured-logs/data-model.md
Sipke Schoorstra ab3e46bbe2
[codex] Add live server log streaming diagnostics (#7438)
* Add live server logs Spec Kit plan

* Implement live server logs diagnostics module

* Add server log sources and redaction hardening

* Add diagnostics unit tests

* Harden server log hub subscriptions

* Secure server log hub permissions

* Validate server log filter updates

* Add diagnostics logger and source tests

* Add diagnostics integration test project

* Add multi-source diagnostics provider coverage

* Broadcast server log source changes

* Document diagnostics server log streaming

* Add diagnostics sample host wiring

* Record diagnostics validation results

* Address server log PR feedback

* Rename diagnostics module to server logs

* Add server logs shell feature

* Make server logs shell options bindable

* Accept read wildcard for server logs

* Align server logs authorization with API patterns

* Update CShells structure and logging levels, add diagnostics module

* Rename PostgreSql shell feature classes for consistency

* Switch from Sqlite to PostgreSQL for workflow and identity persistence, add QuartzPostgreSql configuration

* Refactor server logs into diagnostics structured logs (#7440)

* Specify diagnostics structured logs refactor

* docs: clarify structured logs spec

* docs: plan diagnostics structured logs

* docs: add diagnostics structured logs tasks

* refactor: rename server logs to diagnostics structured logs

* Refactor PostgreSql persistence features to use centralized entity model handler registration.

* Refactor EFCore persistence features to centralize entity model handler registration for MySql, Sqlite, and Oracle providers.

* Integrate structured logs by renaming server logs, adjusting appsettings, and updating project references.

* Switch from PostgreSQL to Sqlite for workflow and identity persistence, update appsettings configuration.
2026-05-11 00:08:52 +02:00

2.8 KiB

Data Model: Diagnostics Structured Logs

StructuredLogEvent

Semantic log record captured from ILogger.

  • Id: unique event identifier.
  • Sequence: monotonic sequence assigned by the provider/logger path.
  • Timestamp: event timestamp.
  • ReceivedAt: backend receive timestamp.
  • Level: structured log level.
  • Category: logger category.
  • EventId: numeric Microsoft logging event ID.
  • EventName: optional Microsoft logging event name.
  • Message: rendered message.
  • MessageTemplate: original template from {OriginalFormat} when available.
  • Exception: optional redacted exception summary/detail.
  • Scopes: redacted key/value scope values from active logging scopes.
  • Properties: redacted structured properties excluding {OriginalFormat}.
  • TraceId, SpanId: active Activity identifiers for future OpenTelemetry links.
  • CorrelationId: correlation value when available.
  • TenantId, WorkflowDefinitionId, WorkflowInstanceId: Elsa context values when available.
  • SourceId: producing source identifier.

StructuredLogSource

Backend process, container, pod, or machine that produced events.

  • Id: stable source identifier for the running process.
  • Name: display name.
  • MachineName, ProcessId, ProcessName: process metadata.
  • PodName, Namespace, ContainerName, NodeName: Kubernetes/container metadata when available.
  • StartedAt, LastSeen: source lifecycle timestamps.
  • Status: unknown, healthy, stale, or disconnected.

StructuredLogFilter

Criteria applied to recent queries and live subscriptions.

  • MinimumLevel: inclusive minimum level.
  • Levels: exact level set.
  • CategoryPrefix: category prefix filter.
  • Query: free-text filter across message, template, category, exception, scopes, and properties.
  • TenantId, WorkflowDefinitionId, WorkflowInstanceId: workflow context filters.
  • TraceId, SpanId, CorrelationId: correlation filters.
  • SourceId: source filter.
  • From, To: timestamp range.
  • Limit: recent query limit clamped by options.

StructuredLogProvider

Pluggable source of redacted recent and live structured log events.

  • Publishes redacted StructuredLogEvent values.
  • Returns recent events plus dropped-buffer count.
  • Streams live events and dropped-event summaries.
  • Lists known StructuredLogSource values.

StructuredLogRedactor

Applies redaction before events leave the backend capture path.

  • Masks sensitive names in properties and scopes.
  • Masks sensitive text patterns in messages and exception details.
  • Runs before buffering and streaming.

StructuredLogSubscription

Live SignalR subscription state.

  • Holds connection ID, current filter, cancellation token, and backpressure state.
  • Can update filters without reconnecting.
  • Reports dropped events when subscriber queues overflow.