* 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.
1.9 KiB
1.9 KiB
Provider Contract: Diagnostics Structured Logs
IStructuredLogProvider
Responsibilities:
- Accept redacted
StructuredLogEventvalues. - Return recent events for a
StructuredLogFilter. - Stream future events for a
StructuredLogFilter. - List known
StructuredLogSourcevalues.
public interface IStructuredLogProvider
{
ValueTask PublishAsync(StructuredLogEvent logEvent, CancellationToken cancellationToken = default);
ValueTask<RecentStructuredLogsResult> GetRecentAsync(StructuredLogFilter filter, CancellationToken cancellationToken = default);
IAsyncEnumerable<StructuredLogEvent> SubscribeAsync(StructuredLogFilter filter, CancellationToken cancellationToken = default);
ValueTask<IReadOnlyCollection<StructuredLogSource>> ListSourcesAsync(CancellationToken cancellationToken = default);
}
IStructuredLogStreamProvider
Extends IStructuredLogProvider with explicit dropped-event summaries for live streams.
public interface IStructuredLogStreamProvider : IStructuredLogProvider
{
IAsyncEnumerable<StructuredLogStreamItem> SubscribeWithDroppedEventsAsync(StructuredLogFilter filter, CancellationToken cancellationToken = default);
}
IStructuredLogRedactor
public interface IStructuredLogRedactor
{
StructuredLogEvent Redact(StructuredLogEvent logEvent);
}
IStructuredLogSourceRegistry
public interface IStructuredLogSourceRegistry
{
event Action<StructuredLogSource>? SourceChanged;
StructuredLogSource Current { get; }
void MarkSeen(string sourceId, DateTimeOffset timestamp);
IReadOnlyCollection<StructuredLogSource> List();
}
In-Memory Provider
InMemoryStructuredLogProvider stores redacted events in a bounded ring buffer and broadcasts live events through bounded subscriber queues. It is the default provider for development and single-node hosts.