如何通过Serilog JSON配置实现Debug日志仅输出到输出窗口?
实现方案
可以实现,完全通过JSON配置就能达成需求。基于你的现有配置,只需对Debug接收器添加级别限制,确保它仅处理Debug级日志;你的Console接收器已经配置了restrictedToMinimumLevel: "Information",这部分不需要修改,它会自动忽略Debug级日志。
修改后的完整配置
{ "Serilog": { "MinimumLevel": { "Default": "Debug", "Override": { "Microsoft": "Warning", "Microsoft.Hosting": "Information", "System": "Warning", "Serilog.AspNetCore": "Warning" } }, "Filter": [], "WriteTo": [ { "Name": "Debug", "Args": { "outputTemplate": "{Timestamp:HH:mm:ss.fff} [{ProcessId}:{ThreadId,-2}] [{Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}", "restrictedToMinimumLevel": "Debug", "restrictedToMaximumLevel": "Debug" } }, { "Name": "Console", "Args": { "restrictedToMinimumLevel": "Information", "outputTemplate": "{Timestamp:HH:mm:ss.fff} [{ProcessId}:{ThreadId,-2}] [{Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}" } } ], "Enrich": [ "FromLogContext", "WithExceptionDetails", "WithDefaultDestructurers", "WithProcessId", "WithThreadId", "WithMachineName", "WithEnvironmentUserName" ] } }
关键改动说明
- 给
Debug接收器的Args添加restrictedToMinimumLevel: "Debug"和restrictedToMaximumLevel: "Debug",这两个参数组合后,该接收器只会处理仅Debug级的日志,Info、Warning等高级别日志不会输出到Debug窗口。 - 全局
MinimumLevel.Default保持Debug,确保所有级别的日志都能被Serilog捕获,这样Debug接收器能拿到Debug级日志,其他接收器也能拿到各自级别范围内的日志。 - Console接收器的
restrictedToMinimumLevel: "Information"已经确保它不会处理Debug级日志,无需修改。
内容的提问来源于stack exchange,提问作者Sharov
相关产品推荐
相关产品推荐

