Audit.NET
An extensible framework to audit executing operations in .NET
Install / Use
/learn @thepirat000/Audit.NETREADME
Audit.NET
USAGE | OUTPUT | CUSTOMIZATION | DATA PROVIDERS | CREATION POLICY | CONFIGURATION | EXTENSIONS
Issues | Build status | Quality gate | Donations | Docs
------------ | ---------------- | ---------------- | -------------- | --------------
|
|
|
|
An extensible framework to audit executing operations in .NET and .NET Core.
Generate audit logs with evidence for reconstruction and examination of activities that have affected specific operations or procedures.
With Audit.NET, you can generate detailed tracking information for executed operations. It captures environmental data such as the caller's user ID, machine name, method name, exceptions, and execution time. The framework also provides an extensible mechanism to enrich logs and manage audit outputs.
-
Interaction extensions to audit different systems are provided, such as Entity Framework, MVC, WebAPI, WCF, WCF Client, File System, SignalR, MongoClient, gRPC Client, gRPC Server, MediatR, Hangfire, Azure Functions, and HttpClient.
-
Output extensions are provided to log to JSON Files, Event Log, Open Telemetry Spans, SQL, MySQL, PostgreSQL, RavenDB, MongoDB, AzureBlob, AzureTables, AzureCosmos, AzureEventHubs, Redis, Elasticsearch, OpenSearch, DynamoDB, ImmuDB, UDP datagrams, Channels and more.
-
Output wrappers are included to facilitate the encapsulation of other Data Providers for diverse purposes, like resilience or lazy instantiation, such as Polly, Lazy, Deferred and Conditional.
NuGet
To install the package run the following command on the Package Manager Console:
PM> Install-Package Audit.NET
Changelog
Check the CHANGELOG.md file.
ZZZ Projects - Sponsorship
Entity Framework Extensions and Dapper Plus are major sponsors and are proud to contribute to the development of Audit.NET
Combine the power of auditing with the speed of Bulk Operations to get the best of both worlds — audit and performance.
Introduction
The Audit Scope and Audit Event are the central objects of this framework.
Audit Scope
The AuditScope serves as the central object in this framework, representing the scope of an audited operation or event.
It acts as a context for auditing, capturing pertinent details like the start time, involved entities, and any additional
custom information. Essentially, the AuditScope encapsulates an AuditEvent, controlling its life cycle.
The AuditScope is a disposable object, commonly utilized within a using statement to ensure proper finalization and recording of audit information upon exiting the scope.
See the audit scope statechart.
Audit Event
The AuditEvent functions as an extensible information container that captures the details of the audited operation,
is the representation of the audited information within an Audit Scope.
It includes details about the audited operation, such as the event type, timestamp, execution duration,
and any custom fields or properties.
The AuditEvent is typically serialized into a format suitable for storage or transmission, such as JSON.
The audit events are stored using a Data Provider. You can use one of the available data providers or implement your own.
Audit Scope Factory
The preferred method for creating audit scopes is by using an IAuditScopeFactory instance.
This approach ensures a centralized and consistent configuration for all audit scopes.
var factory = new AuditScopeFactory();
using var scope = factory.Create(new AuditScopeOptions(...));
...
If you're using a DI container, you can register the IAuditScopeFactory as a service and inject it into your classes.
The default implementation of IAuditScopeFactory is provided by the AuditScopeFactory class.
services.AddScoped<IAuditScopeFactory, AuditScopeFactory>();
Then you can inject the IAuditScopeFactory into your classes to create audit scopes:
public class MyService
{
private readonly IAuditScopeFactory _auditScopeFactory;
public MyService(IAuditScopeFactory auditScopeFactory)
{
_auditScopeFactory = auditScopeFactory;
}
public void MyMethod()
{
using var scope = _auditScopeFactory.Create(new AuditScopeOptions(...));
...
}
}
You can also implement your own IAuditScopeFactory to customize the creation of audit scopes.
The recommended approach is to inherit from the AuditScopeFactory class.
By overriding the OnConfiguring and OnScopeCreated methods, you can configure the audit scope options before creation and customize the audit scope after creation respectively.
For example:
publ
Related Skills
node-connect
339.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR


