我在我的ASP.NET WEB API .NET Core 3应用程序中有多个Serilog的sink。
其中一个是MS SQL,我只想写入错误消息。以下是我的appsettings.json的一部分:
"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Debug", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Information",
"System": "Information"
}
},
"WriteTo": [
{ "Name": "Console" },
{ "Name": "Debug" },
{
"Name": "File",
"Args": {
"path": "Logs/log_.txt",
"rollingInterval": "Minute",
"shared": true
}
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "CONNECTIONSTRING",
"sinkOptionsSection": {
"tableName": "Logs",
"schemaName": "EventLogging",
"autoCreateSqlTable": true,
"batchPostingLimit": 50,
"restrictedToMinimumLevel": "Error",
"period": "0.00:00:30"
}
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName" ]
}
最终,我在 SQL 日志表中收到了一些信息和调试级别的消息。
上面的配置有什么问题?为什么restrictedToMinimumLevel没有起作用?
如果我想排除低于信息级别的消息,我必须在MinimumLevel部分的Default子部分中设置它。
但是,在这种情况下,我不能为特定的 sink 指定较低级别的消息。例如:
"restrictedToMinimumLevel":"Debug"
不会帮助 - 调试信息不会被写入到 MS SQL 中。