Serilog MS SqlServer Sink仅写入1个日志级别

时间:2017-05-31 02:39:38

标签: c# asp.net-core serilog

我已经使用.NetCore连接了Serilog,我正在使用MSSQLServer接收器。我可以使用当前设置登录数据库,但似乎只显示一个日志级别。

配置:

var logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.MSSqlServer(mssql.ConnectionString, mssql.TableName, autoCreateSqlTable: true)
    .CreateLogger();

记录代码:

Log.Information("Information Log");

try
{
    var numerator = 10;
    var denominator = 0;
    var num = numerator / denominator;
}
catch (Exception ex)
{
    Log.Error(ex, "Divided by Zero error");
}

即使设置了最低日志级别,默认设置也会记录信息但不记录错误。

如何更改此设置以便我可以拥有真正的最低日志级别,以将该级别以上的所有内容记录到数据库

1 个答案:

答案 0 :(得分:1)

看起来你使用了错误的记录器。 .NET Core Logging提供了extension methods,如LogInformationLogError等(应用于ILogger.Log的包装器),应该使用:

var logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.MSSqlServer(mssql.ConnectionString, mssql.TableName, autoCreateSqlTable: true)
    .CreateLogger();

logger.LogInformation("Information Log");
...
logger.LogError(ex, "Divided by Zero error");