62 lines
2.3 KiB
C#
62 lines
2.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using Audit.Core;
|
|
using System.Collections;
|
|
|
|
namespace EnVisage.Code.AuditEngine
|
|
{
|
|
public sealed class AuditRuntime
|
|
{
|
|
private static volatile AuditRuntime _runtime;
|
|
|
|
private static readonly object _sync = new object();
|
|
private AuditRuntime() {
|
|
|
|
}
|
|
public static AuditRuntime Init()
|
|
{
|
|
if (_runtime == null)
|
|
{
|
|
lock (_sync)
|
|
{
|
|
if (_runtime == null)
|
|
{
|
|
string connectionString = null;
|
|
if (ConfigurationManager.ConnectionStrings["AuditConnection"] != null)
|
|
connectionString = ConfigurationManager.ConnectionStrings["AuditConnection"].ConnectionString;
|
|
if (string.IsNullOrWhiteSpace(connectionString))
|
|
throw new ConfigurationErrorsException("Audit connection string is not set");
|
|
Audit.Core.Configuration.Setup()
|
|
.UseSqlServer(config => config
|
|
.ConnectionString(connectionString)
|
|
.Schema("dbo")
|
|
.TableName("Event")
|
|
.IdColumnName("EventId")
|
|
.JsonColumnName("Data")
|
|
.LastUpdatedColumnName("LastUpdatedDate"));
|
|
Audit.EntityFramework.Configuration.Setup()
|
|
.ForAnyContext(t => t.IncludeEntityObjects(false))
|
|
.UseOptOut()
|
|
.IgnoreAny(t => t.BaseType is ICollection<Scenario>);
|
|
_runtime = new AuditRuntime();
|
|
}
|
|
}
|
|
}
|
|
return _runtime;
|
|
}
|
|
|
|
public static AuditScope CreateScope()
|
|
{
|
|
var options = new Audit.Core.AuditScopeOptions
|
|
{
|
|
CreationPolicy = Audit.Core.EventCreationPolicy.InsertOnEnd,
|
|
AuditEvent = new Audit.Core.AuditEvent()
|
|
};
|
|
var scope = Audit.Core.AuditScope.Create(options);
|
|
return scope;
|
|
}
|
|
}
|
|
} |