Serilog配置疑问:如何将单一日志级别写入独立文件
解决方案
你需要将Filters配置放在每个WriteTo条目下,与Name、Args同级,而非嵌套在Args内部。以下是完整的appsettings.json配置示例,实现三个级别日志分别写入独立文件:
"Serilog": { "MinimumLevel": "Information", "WriteTo": [ { "Name": "Console" }, { "Name": "File", "Args": { "path": "wwwroot/Logs/information.txt", "rollingInterval": "Day", "retainedFileCountLimit": 14, "restrictedToMinimumLevel": "Information" }, "Filters": [ { "Name": "ByIncludingOnly", "Args": { "expression": "@l = 'Information'" } } ] }, { "Name": "File", "Args": { "path": "wwwroot/Logs/warning.txt", "rollingInterval": "Day", "retainedFileCountLimit": 14, "restrictedToMinimumLevel": "Warning" }, "Filters": [ { "Name": "ByIncludingOnly", "Args": { "expression": "@l = 'Warning'" } } ] }, { "Name": "File", "Args": { "path": "wwwroot/Logs/Error.txt", "rollingInterval": "Day", "retainedFileCountLimit": 14, "restrictedToMinimumLevel": "Error" }, "Filters": [ { "Name": "ByIncludingOnly", "Args": { "expression": "@l = 'Error'" } } ] } ] }
关键说明:
- 每个
File类型的WriteTo条目独立配置:分别指定对应日志文件路径,加上专属的Filters过滤规则,确保只有对应级别的日志写入文件。 - 修正了原配置中的拼写错误:
reatinedFileCountLimit改为正确的retainedFileCountLimit。 restrictedToMinimumLevel作为基础限制,配合ByIncludingOnly的表达式精准过滤,双重保障日志级别分离。- 你的
Program.cs代码无需修改,已通过ReadFrom.Configuration读取配置,修改配置文件后重启应用即可生效。
内容的提问来源于stack exchange,提问作者Ikinidae
相关产品推荐
相关产品推荐

