不同的最低级别日志 Serilog
Different Minimum Level Logs Serilog
有没有办法区分 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",但没用。
您要找的设置是restrictedToMinimumLevel
。此 GitHub issue 显示了一些示例,但对于您的示例,您只需将 restrictedToMinimumLevel
添加到 Args
for RollingFile
:
"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"
}
]
},
在您的配置中,您有一个 Serilog 记录器,但是您有 2 个 sinks。您的接收器之一是 RollingFile,另一个是 Console。
You can override (but only raise) the minimum logging level per sink,参数调用restrictedToMinimumLevel
.
由于您想将文件接收器中的最低日志记录级别从记录器的默认 Debug
提高到 Warning
,因此在 appsettings.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",
"restrictedToMinimumLevel": "Warning"
}
},
{
"Name": "Console"
}
]
},
根据上面的答案,这就是我在代码中设置它的方式,而不是配置
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>();
在我这样做之后,它适用于日志级别 Information 及更高级别。调试没有用。 解释了原因。
我必须像这样设置一个 'global' 最低级别。
LoggerConfiguration GetConfig()
=> new LoggerConfiguration()
.WriteTo.Seq(serverUrl: "http://localhost:5341", restrictedToMinimumLevel: LogEventLevel.Debug)
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error)
.MinimumLevel.Verbose();
有没有办法区分 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",但没用。
您要找的设置是restrictedToMinimumLevel
。此 GitHub issue 显示了一些示例,但对于您的示例,您只需将 restrictedToMinimumLevel
添加到 Args
for RollingFile
:
"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"
}
]
},
在您的配置中,您有一个 Serilog 记录器,但是您有 2 个 sinks。您的接收器之一是 RollingFile,另一个是 Console。
You can override (but only raise) the minimum logging level per sink,参数调用restrictedToMinimumLevel
.
由于您想将文件接收器中的最低日志记录级别从记录器的默认 Debug
提高到 Warning
,因此在 appsettings.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",
"restrictedToMinimumLevel": "Warning"
}
},
{
"Name": "Console"
}
]
},
根据上面的答案,这就是我在代码中设置它的方式,而不是配置
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>();
在我这样做之后,它适用于日志级别 Information 及更高级别。调试没有用。
我必须像这样设置一个 'global' 最低级别。
LoggerConfiguration GetConfig()
=> new LoggerConfiguration()
.WriteTo.Seq(serverUrl: "http://localhost:5341", restrictedToMinimumLevel: LogEventLevel.Debug)
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Error)
.MinimumLevel.Verbose();