Lyo.Audit
1.0.9
dotnet add package Lyo.Audit --version 1.0.9
NuGet\Install-Package Lyo.Audit -Version 1.0.9
<PackageReference Include="Lyo.Audit" Version="1.0.9" />
<PackageVersion Include="Lyo.Audit" Version="1.0.9" />
<PackageReference Include="Lyo.Audit" />
paket add Lyo.Audit --version 1.0.9
#r "nuget: Lyo.Audit, 1.0.9"
#:package Lyo.Audit@1.0.9
#addin nuget:?package=Lyo.Audit&version=1.0.9
#tool nuget:?package=Lyo.Audit&version=1.0.9
Lyo.Audit
Audit trail library with two records: AuditChange (entity change tracking) and AuditEvent (events to log). Both are immutable. Once created they do not change. Each carries an EntityRef for the subject plus an optional EntityRef for the actor. IAuditRecorder is the storage contract.
Features
- AuditChange. Entity/property change record:
Id(Guid),Timestamp,Entity(EntityRef),OldValues(property to old value),ChangedProperties(property to new value), optionalActor(EntityRef?). - AuditEvent. Event to log:
Id(Guid),Subject(EntityRef),EventType,Timestamp, optionalMessage,Actor(EntityRef?), andMetadata. - IAuditRecorder. Sync and async methods:
RecordChange/RecordChangeAsync,RecordChanges/RecordChangesAsync,RecordEvent/RecordEventAsync,RecordEvents/RecordEventsAsync. Implement to persist to a database or log sink. - NullAuditRecorder. No-op implementation when auditing is not needed.
Examples
AuditChange (entity changes)
using Lyo.Audit;
using Lyo.EntityReference.Models;
var change = new AuditChange(
EntityRef.For<Order>(order.Id),
new Dictionary<string, object?> {
["Name"] = "Old Name",
["Status"] = "Draft"
},
new Dictionary<string, object?> {
["Name"] = "New Name",
["Status"] = "Submitted"
}) {
Actor = EntityRef.ForKey("User", currentUserId.ToString())
};
auditRecorder.RecordChange(change);
AuditEvent (events to log)
using Lyo.Audit;
using Lyo.EntityReference.Models;
var evt = new AuditEvent(
Subject: EntityRef.ForKey("User", "user-123"),
EventType: "UserLogin",
Message: "User signed in successfully",
Actor: EntityRef.ForKey("User", "user-123"),
Metadata: new Dictionary<string, object?> {
["IpAddress"] = "192.168.1.1",
["UserAgent"] = "Mozilla/5.0..."
});
auditRecorder.RecordEvent(evt);
Bulk and async recording
auditRecorder.RecordChanges(new[] { change1, change2, change3 });
auditRecorder.RecordEvents(new[] { evt1, evt2 });
await auditRecorder.RecordChangeAsync(change);
await auditRecorder.RecordChangesAsync(changes, cancellationToken);
await auditRecorder.RecordEventAsync(evt);
await auditRecorder.RecordEventsAsync(events, cancellationToken);
AuditChange (entity changes)
Decorate domain types with [EntityRefLogicalType("MyApp.Order")] to keep the persisted EntityType stable across CLR renames.
PostgreSQL persistence
Use Lyo.Audit.Postgres for PostgreSQL storage with EF Core migrations:
<PackageReference Include="Lyo.Audit.Postgres" Version="1.0.22" />
services.AddPostgresAuditRecorder(new PostgresAuditOptions {
ConnectionString = configuration.GetConnectionString("Audit"),
EnableAutoMigrations = true
});
When EnableAutoMigrations is true, migrations run at host startup via IHostedService, not during service registration. The app must use a host such as
Host.CreateDefaultBuilder() or WebApplication.CreateBuilder().
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.EntityReference.Models(direct, lyo)Lyo.Common(transitive, lyo)Lyo.Exceptions(transitive, lyo)Microsoft.Extensions.Logging.Abstractions10.0.5(transitive, microsoft)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Lyo.EntityReference.Models (>= 1.0.9)
-
net10.0
- Lyo.EntityReference.Models (>= 1.0.9)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Lyo.Audit:
| Package | Downloads |
|---|---|
|
Lyo.Audit.Postgres
PostgreSQL implementation of Lyo.Audit using Entity Framework Core. Persists AuditChange and AuditEvent to Postgres with migrations support. |
|
|
Lyo.Reporting.Postgres
PostgreSQL reporting data layer with EF Core, optional auto-migrations, and report generation orchestration. |
|
|
Lyo.Job.Postgres
PostgreSQL job management data layer with EF Core, optional auto-migrations, and API endpoints for scheduling, running, and monitoring background jobs with RabbitMQ support. |
GitHub repositories
This package is not used by any popular GitHub repositories.