Carbon.Audit
1.5.0 - DbContextOptionsBuilder.AddCarbonAuditInterceptor(serviceProvider) added. Services that register their DbContext themselves can wire auditing in with a single line inside their AddDbContext callback, instead of taking AuditInterceptor as a DbContext constructor dependency. Safe to call unconditionally. - AuditInterceptor no longer collects audit events for saves that happen outside an HTTP request (database seeding, Quartz jobs, MassTransit consumers). Those events were never published anyway - RequestContextMiddleware is the only publisher and it does not run in such scopes - so nothing that used to be published is lost, while the wasted change tracker traversal and the unbounded growth of RequestContext.PendingAuditEvents in long-lived non-HTTP scopes are gone. NOTE: if you publish RequestContext.PendingAuditEvents yourself from a non-HTTP code path, that path will no longer receive events. - AuditInterceptor now also intercepts synchronous saves. Previously only the ...Async interception points were overridden, so every DbContext.SaveChanges() call silently produced no audit event. Entities saved through synchronous code paths are audited now. - RequestContext and AuditInterceptor are now registered in DI unconditionally, so DbContexts that take AuditInterceptor as a constructor dependency stay resolvable when "CarbonAudit:Enabled" is false (previously the application failed to start). - AuditInterceptor is now genuinely inert when disabled: every interception point returns immediately, so no change tracker traversal or reflection happens. - CarbonAuditSettings is now bound from the "CarbonAudit" section; AuditInterceptor takes IOptions<CarbonAuditSettings> as a third constructor argument. - UseCarbonAudit() is now a no-op when the feature is disabled. - The audit bus and IAuditEventPublisher registrations remain conditional: nothing connects to RabbitMQ when auditing is disabled. 1.4.0 - .NET 10 (net10.0) target framework added; existing targets preserved. 1.3.0 - HttpRequestAuditEvent now includes ApiStatusCode, ErrorCode, Messages (parsed from response body) and DurationMs. - AuditEvent now includes ApiStatusCode, ErrorCode and Messages. - HttpStatusCodeFilter added: HTTP request audit events can now be filtered by response status code (exact codes and/or range). 1.2.0 - Carbon.MassTransit dependency added. - Carbon.Audit adds It's own masstransit implementation. 1.1.1 - Token header is now also considered sensitive and redacted. 1.1.0 - Dedicated HTTP request audit event publishing added. 1.0.2 - TransactionId header is now also accepted as a case-insensitive fallback for CorrelationId - Synthesize a FailedRequest audit event for HTTP >= 400 responses that have no pending DB-change events (e.g. GET requests that are rejected) - Added AuditAction.FailedRequest = 3 enum value - Audit records are now emitted for all requests regardless of outcome (including HTTP 500 / DB errors) - AuditEvent now carries HttpStatusCode of the HTTP response 1.0.1 - Add advanced audit filtering options to CarbonAudit settings 1.0.0 - Initial release. RequestContextMiddleware, AuditInterceptor and audit constants added.
Activity
- Latest release
- 1mo ago
- Total releases
- 9
- Cadence
- ~6 days
- Last 12 months
- 9
Details
- First release
- Apr 14, 2026
| Version | Released | |
|---|---|---|
1.5.0
minor
|
1.5.0
minor
Dependencies (3)
|
|
1.4.0
minor
|
1.4.0
minor
Dependencies (3)
|
|
1.3.0
minor
|
1.3.0
minor
Dependencies (3)
|
|
1.2.0
minor
|
1.2.0
minor
Dependencies (3)
|
|
1.1.1
patch
|
1.1.1
patch
Dependencies (2)
|
|
1.1.0
minor
|
1.1.0
minor
Dependencies (2)
|
|
1.0.2
patch
|
1.0.2
patch
Dependencies (2)
|
|
1.0.1
patch
|
1.0.1
patch
Dependencies (2)
|
|
1.0.0
initial
|
1.0.0
initial
Dependencies (2)
|