![]() |
VOOZH | about |
dotnet add package OpenAuditLog --version 1.0.2
NuGet\Install-Package OpenAuditLog -Version 1.0.2
<PackageReference Include="OpenAuditLog" Version="1.0.2" />
<PackageVersion Include="OpenAuditLog" Version="1.0.2" />Directory.Packages.props
<PackageReference Include="OpenAuditLog" />Project file
paket add OpenAuditLog --version 1.0.2
#r "nuget: OpenAuditLog, 1.0.2"
#:package OpenAuditLog@1.0.2
#addin nuget:?package=OpenAuditLog&version=1.0.2Install as a Cake Addin
#tool nuget:?package=OpenAuditLog&version=1.0.2Install as a Cake Tool
Simple C# event and audit log library with persistence allowing you to write your own emitters.
Instantiate the AuditLog object, specifying the name of the Sqlite database file to use.
using OpenAuditLog;
AuditLog log = new AuditLog("auditlog.db");
Define and add your targets using AddTarget and the AuditLogTarget class. Your target function should return a boolean with true indicating success, or, false indicating failure and that OpenAuditLog should try again.
Func<AuditLogEntry, bool> func1 = delegate (AuditLogEntry a)
{
Console.WriteLine("Action 1: " + a.ToJson(false));
return true; // report success
};
log.AddTarget("MyTarget", func1);
Set Logger if you wish to output messages to the console or elsewhere. This also serves as a "logger of last resort" in case an event can't be sent to a target. Additionally, you can create handlers for the EntrySendFailure and EntryEvicted events.
log.Logger = Console.WriteLine;
log.EntrySendFailure += MyEntrySendFailure;
log.EntryEvicted += MyEntryEvicted;
static void MyEntrySendFailure(object sender, EntryEventArgs args)
{
Console.WriteLine("Entry " + args.Entry.GUID + " couldn't be sent to target " + args.Target.GUID);
}
static void MyEntryEvicted(object sender, EntryEventArgs args)
{
Console.WriteLine("Entry " + args.Entry.GUID + " was evicted, failed too hard!");
}
Add events using AddEvent and watch them fly.
Events added through AddEvent are persisted in Sqlite until emitted successfully. If multiple targets are configured, one record per target will be created for each event. You can control the number of attempts to send an event by modifying AuditLog.MaxAttempts or specify the optional parameter maxAttempts in AuditLog.AddEvent.
Events sent successfully are removed from Sqlite, and those that have failed the specified number of times will also be removed. Refer to "Logger of Last Resort" above to determine how to intercept such situations.
// build it yourself
AuditLogEntry myEntry = new AuditLogEntry();
myEntry.Metadata = myClassInstance;
// also set Identity, Source, Target, Resource, Type, etc, if you like
// or use the giga-constructor
AuditLogEntry myEntry = new AuditLogEntry(metadata, identity, source, ...);
Fire away!
log.AddEvent(myEntry);
Refer to the Test project for a full example.
AuditLog auditLog = new AuditLog("auditlog.db");
auditLog.Logger = Console.WriteLine;
auditLog.MaxAttempts = 3;
Func<AuditLogEntry, bool> myTarget = delegate (AuditLogEntry a)
{
Console.WriteLine("My target: " + a.ToJson(false));
return true;
};
// add the target
auditLog.AddTarget(new AuditLogTarget("target1", myTarget));
// create the event
AuditLogEntry entry = new AuditLogEntry();
entry.Metadata = myClassInstance;
// also set Identity, Source, Target, Resource, Type, etc
// fire away!
auditLog.AddEvent(entry);
Refer to CHANGELOG.md for version history.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net462 net462 is compatible. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 1 NuGet packages that depend on OpenAuditLog:
| Package | Downloads |
|---|---|
|
EventMd
Simple class structure for event metadata |
This package is not used by any popular GitHub repositories.
Remove Newtonsoft.Json