是否可以区分Serilog的不同记录器之间记录的级别?我希望能够将MinimumLevel Debug记录到控制台输出,但是将Warning和以上记录到我的文件输出中。我正在使用ASP.NET Core 2.1,这是appsetting.json当前的样子:
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "RollingFile",
"IsJson": true,
"Args": {
"pathFormat": "C:\\Logs\\Log-{Hour}.json",
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
}
},
{
"Name": "Console"
}
]
},
是否类似于“ Args”下的另一个参数?我在此位置尝试过“ minimumnLevel”,但没有用。
答案 0 :(得分:5)
您要查找的设置是restrictedToMinimumLevel
。这个GitHub issue显示了一些示例,但是对于您的示例,您只需要在restrictedToMinimumLevel
的{{1}}中添加Args
:
RollingFile
答案 1 :(得分:2)
在您的配置中,您有一个Serilog记录器,但您有2个接收器。您的接收器之一是RollingFile,另一个是控制台。
You can override (but only raise) the minimum logging level per sink,该参数称为restrictedToMinimumLevel
。
由于要在文件接收器的appsettings.json文件中将最低记录级别从记录器的默认Debug
提高到Warning
,因此看起来像这样:
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "RollingFile",
"IsJson": true,
"Args": {
"pathFormat": "C:\\Logs\\Log-{Hour}.json",
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog",
"restrictedToMinimumLevel": "Warning"
}
},
{
"Name": "Console"
}
]
},
答案 2 :(得分:0)
根据上面的答案,这是我在代码中而不是在config中进行设置的方式
List<T>
完成此操作后,它可用于日志级别的“信息”及更高级别。调试无效。 This post解释了原因。
我必须像这样设置一个“全局”最低级别。
LoggerConfiguration GetConfig()
=> new LoggerConfiguration()
.WriteTo.Seq(serverUrl: "http://localhost:5341", restrictedToMinimumLevel: LogEventLevel.Debug)
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error);
var logger = GetConfig().CreateLogger();
builder.RegisterInstance(logger).As<ILogger>();