datba.AuditLog 1.0.0

dotnet add package datba.AuditLog --version 1.0.0
                    
NuGet\Install-Package datba.AuditLog -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="datba.AuditLog" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="datba.AuditLog" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="datba.AuditLog" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add datba.AuditLog --version 1.0.0
                    
#r "nuget: datba.AuditLog, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package datba.AuditLog@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=datba.AuditLog&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=datba.AuditLog&version=1.0.0
                    
Install as a Cake Tool

AuditLog Library

A lightweight, cross-platform Audit Logging library for .NET applications.


Installation

  1. Add the AuditLog project to your solution.
  2. Add a reference to this library in your main application project (API, WPF, WinForms, etc.).

Core Concepts

To use this library, you need to understand three main interfaces:

  1. IAuditService
    The primary service you inject into controllers or services to write audit logs.

  2. IUserContext
    You must implement this interface to tell the library who the current user is.

  3. IAuditStore
    You implement this interface to define where audit logs are stored.
    The library includes a built-in FileAuditStore.


Usage Guide

1. Implement IUserContext

ASP.NET Core API Example
public class HttpUserContext : IUserContext
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public HttpUserContext(IHttpContextAccessor accessor)
    {
        _httpContextAccessor = accessor;
    }

    public string GetUserId() =>
        _httpContextAccessor.HttpContext?.User?.FindFirst("sub")?.Value;

    public string GetUserName() =>
        _httpContextAccessor.HttpContext?.User?.Identity?.Name;

    public string GetIpAddress() =>
        _httpContextAccessor.HttpContext?.Connection?.RemoteIpAddress?.ToString();
}
WPF / WinForms Example
public class DesktopUserContext : IUserContext
{
    public string GetUserId() => AppGlobal.CurrentUserId ?? "System";
    public string GetUserName() => AppGlobal.CurrentUserName ?? "System";
    public string GetIpAddress() => "Localhost";
}

2. Implement IAuditStore (Database)

public class DbAuditStore : IAuditStore
{
    private readonly MyDbContext _db;

    public DbAuditStore(MyDbContext db)
    {
        _db = db;
    }

    public async Task SaveLogAsync(AuditEntry entry)
    {
        // _db.AuditLogs.Add(entry);
        // await _db.SaveChangesAsync();
    }
}

3. Register Services

builder.Services.AddAuditLog();
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped<IUserContext, HttpUserContext>();

builder.Services.AddScoped<IAuditStore, DbAuditStore>();
builder.Services.AddSingleton<IAuditStore>(
    new FileAuditStore(Path.Combine(builder.Environment.ContentRootPath, "Logs")));

4. Writing Logs

await _audit.LogAsync(
    action: "Update",
    entityName: "Product",
    entityKey: dto.Id.ToString(),
    oldObj: null,
    newObj: dto
);

Project Structure

MyCompany.Common.AuditLog/
├── Extensions/
├── Interfaces/
├── Models/
├── Providers/
└── Services/

License

MIT

Product Compatible and additional computed target framework versions.
.NET 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.  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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 295 12/16/2025