Skip to content

Latest commit

 

History

History
94 lines (69 loc) · 3.46 KB

README.md

File metadata and controls

94 lines (69 loc) · 3.46 KB

Audit.NET.MongoDB

Mongo DB provider for Audit.NET library. (An extensible framework to audit executing operations in .NET).

Store the audit events in a Mongo DB Collection, in BSON format.

Install

NuGet Package

PM> Install-Package Audit.NET.MongoDB

NuGet Status NuGet Count

Usage

Please see the Audit.NET Readme

Configuration

Set the static Audit.Core.Configuration.DataProvider property to set the Mongo DB data provider, or call the UseMongoDB method on the fluent configuration. This should be done before any AuditScope creation, i.e. during application startup.

For example:

Audit.Core.Configuration.DataProvider = new Audit.MongoDB.Providers.MongoDataProvider()
{
    ConnectionString = "mongodb://localhost:27017",
    Database = "Audit",
    Collection = "Event"
};

Or by using the fluent configuration API:

Audit.Core.Configuration.Setup()
    .UseMongoDB(config => config
        .ConnectionString("mongodb://localhost:27017")
        .Database("Audit")
        .Collection("Event"));

Instead of using the connection string, you have the option to supply the MongoClientSettings instead:

Audit.Core.Configuration.Setup()
    .UseMongoDB(config => config
        .ClientSettings(new MongoClientSettings() 
        { 
            Server = new MongoServerAddress("localhost", 27017), 
            UseTls = true 
        })
        .Database("Audit")
        .Collection("Event"));

You can find more information about MongoClientSettings here.

Provider options

Mandatory:

  • ConnectionString: The Mongo DB connection string.
  • ClientSettings: The Mongo DB client settings.
  • Database: The audit Mongo Database name.
  • DatabaseSettings: The audit Mongo Database settings (optional).
  • Collection: The events Mongo Collection name.
  • SerializeAsBson: A value indicating whether the target object and extra fields should be serialized as Bson. Default is false to serialize as Json.

Output sample

An example of the output as seen with NoSQL Manager for Mongo DB:

MongoDB sample

Query events

This provider implements GetEvent and GetEventAsync methods to obtain an audit event by id:

var event = mongoDataProvider.GetEvent("57b60f25be5914a355771629");

The Mongo DB data provider also includes support for querying the events collection.

You can use the QueryEvents() method on MongoDataProvider class to run LINQ queries against the audit events.

For example, to get the top 10 most time-consuming events for a specific machine:

IQueryable<AuditEvent> query = mongoDataProvider.QueryEvents()
	.Where(ev => ev.Environment.MachineName == "HP")
	.OrderByDescending(ev => ev.Duration)
	.Take(10);