我们希望获取以下日志:
- 控制台(所有日志)
- 文件(所有日志)
- 文件(仅筛选后的日志)
所有这些都在appsettings.json中配置。
这是应用程序的appsettings.json文件:
{
"Serilog": {
"Using": [ "Serilog.Sinks.Literate", "Serilog.Sinks.File", "Serilog.Filters.Expressions" ],
"MinimumLevel": "Verbose",
"WriteTo": [
{
"Name": "LiterateConsole"
},
{
"Name": "File",
"Args": {
"path": "%TEMP%\\Logs\\FileWithoutFilter-.log",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
"rollingInterval": "Day"
}
},
{
"Name": "File",
"Args": {
"path": "%TEMP%\\Logs\\UPLOADERROR-.log",
"outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
},
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@Level = 'Error' and UploadError is not null"
}
}
]
}
]
}
}
然而,尽管Console和未经过滤的File日志记录正常运行,带有过滤器的File仍会记录所有行,就像未经过滤的文件一样。
我们在C#代码中发送了该log.error行:
Log.Error("Fichero con error {@UploadError}", true);
但是,我已经说过,所有的行都被记录到UPLOADERROR文件中。
有什么想法是appsettings.file出了什么问题吗?
谢谢。
@Level
现在是@l
。 - Menahem