Lyo.Audit
1.0.1
dotnet add package Lyo.Audit --version 1.0.1
NuGet\Install-Package Lyo.Audit -Version 1.0.1
<PackageReference Include="Lyo.Audit" Version="1.0.1" />
<PackageVersion Include="Lyo.Audit" Version="1.0.1" />
<PackageReference Include="Lyo.Audit" />
paket add Lyo.Audit --version 1.0.1
#r "nuget: Lyo.Audit, 1.0.1"
#:package Lyo.Audit@1.0.1
#addin nuget:?package=Lyo.Audit&version=1.0.1
#tool nuget:?package=Lyo.Audit&version=1.0.1
Lyo.Audit
Audit trail library with two distinct concepts: AuditChange (entity change tracking) and AuditEvent (events to log). AuditChange and AuditEvent are immutable records—once created they do not change. Both carry an EntityRef for the thing they are about plus an optional EntityRef for the actor that caused them. Includes IAuditRecorder for pluggable storage.
Features
- AuditChange (record) – Entity/property change:
Id(Guid),Timestamp,Entity(EntityRef),OldValues(property → old value),ChangedProperties(property → new value), optionalActor(EntityRef?) - AuditEvent (record) – An event to log:
Id(Guid),Subject(EntityRef),EventType,Timestamp, optionalMessage,Actor(EntityRef?), andMetadata - IAuditRecorder – Interface with sync and async methods:
RecordChange/RecordChangeAsync,RecordChanges/RecordChangesAsync,RecordEvent/RecordEventAsync,RecordEvents/RecordEventsAsync(implement to persist to database, log sink, etc.) - 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. Ensure your app uses a host (e.g.
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.1)
-
net10.0
- Lyo.EntityReference.Models (>= 1.0.1)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Lyo.Audit:
| Package | Downloads |
|---|---|
|
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. |
|
|
Lyo.Reporting.Postgres
PostgreSQL reporting data layer with EF Core, optional auto-migrations, and report generation orchestration. |
|
|
Lyo.Audit.Postgres
PostgreSQL implementation of Lyo.Audit using Entity Framework Core. Persists AuditChange and AuditEvent to Postgres with migrations support. |
GitHub repositories
This package is not used by any popular GitHub repositories.