Vấn đề này có thể dễ dàng giải quyết bằng cách cấu hình mục tiêu khai thác gỗ trong mã:
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;
}
Sau đó, bạn có thể đăng ký nó với cấu hình NLog của bạn:
var target = CreateDatabaseTarget();
LogManager.Configuration.AddTarget("databaseTarget", CreateDatabaseTarget());
LogManager.Configuration.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Warn, target));
Nhưng nếu bạn đang sử dụng tốt với lấy một số phụ thuộc Nuget hoặc muốn có một giải pháp hoàn chỉnh hơn, bạn có thể xem tại các kho NLog.Mvc và NLog.EntityFramework cả hai đều có gói nuget có sẵn ...
Nguồn
2013-11-07 20:14:18
Cần lưu ý rằng OP là tác giả của gói NLog.EntityFramework mà bạn đã liên kết tới. –
Đúng, được tạo ra do câu hỏi này không có câu trả lời thỏa đáng vào thời điểm đó. :-) – ladenedge