这个问题可以通过配置日志目标代码迎刃而解:
var target = CreateDatabaseTarget();
LogManager.Configuration.AddTarget("databaseTarget", CreateDatabaseTarget());
LogManager.Configuration.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Warn, target));
,如果你是罚款,但:
private DatabaseTarget CreateDatabaseTarget()
{
var entityFrameworkConnection = ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString;
var builder = new EntityConnectionStringBuilder(entityFrameworkConnection);
var connectionString = builder.ProviderConnectionString;
var target = new DatabaseTarget()
{
ConnectionString = connectionString,
CommandText = @"insert into Log ([DateTime], [Message]) values (@dateTime, @message);",
Parameters = {
new DatabaseParameterInfo("@dateTime", new NLog.Layouts.SimpleLayout("${date}")),
new DatabaseParameterInfo("@message", new NLog.Layouts.SimpleLayout("${message}")),
}
};
return target;
}
然后你可以用你的NLOG配置寄存器采取一些Nuget的依赖或想要一个更完整的解决方案,你可以看看NLog.Mvc和NLog.EntityFramework存储库谁都可以nuget包...
应该指出,OP是您链接到的NLog.EntityFramework软件包的创建者。 – 2015-01-24 11:22:03
是的,这个问题的结果是当时没有满意的答案。 :-) – ladenedge 2015-09-29 16:16:49