OpenAuditLog 1.0.2
dotnet add package OpenAuditLog --version 1.0.2
NuGet\Install-Package OpenAuditLog -Version 1.0.2
<PackageReference Include="OpenAuditLog" Version="1.0.2" />
paket add OpenAuditLog --version 1.0.2
#r "nuget: OpenAuditLog, 1.0.2"
// Install OpenAuditLog as a Cake Addin #addin nuget:?package=OpenAuditLog&version=1.0.2 // Install OpenAuditLog as a Cake Tool #tool nuget:?package=OpenAuditLog&version=1.0.2
OpenAuditLog
Simple C# event and audit log library with persistence allowing you to write your own emitters.
How it Works
Instantiate
Instantiate the AuditLog
object, specifying the name of the Sqlite database file to use.
using OpenAuditLog;
AuditLog log = new AuditLog("auditlog.db");
Define Event Targets
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);
Logger of Last Resort
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!");
}
Let 'Er Rip
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);
Simple Example
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);
Version History
Refer to CHANGELOG.md
for version history.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net462 is compatible. 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 | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- System.Text.Json (>= 8.0.5)
- WatsonORM.Sqlite (>= 2.0.1.1)
-
.NETStandard 2.1
- System.Text.Json (>= 8.0.5)
- WatsonORM.Sqlite (>= 2.0.1.1)
-
net6.0
- System.Text.Json (>= 8.0.5)
- WatsonORM.Sqlite (>= 2.0.1.1)
-
net8.0
- System.Text.Json (>= 8.0.5)
- WatsonORM.Sqlite (>= 2.0.1.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OpenAuditLog:
Package | Downloads |
---|---|
EventMd
Simple class structure for event metadata |
GitHub repositories
This package is not used by any popular GitHub repositories.
Remove Newtonsoft.Json