如何配置Serilog避免记录HttpMessageHandler清理日志?
解决HttpClientFactory清理日志过多的问题
那些Starting/Ending HttpMessageHandler cleanup cycle日志属于Microsoft.Extensions.Http.DefaultHttpClientFactory类别的Debug级别日志。你当前的配置仅将该类别的最低日志级别设为Information,但全局Serilog最低级别为Debug,且Microsoft的Override规则优先级逻辑导致冗余日志未被过滤。
需要调整配置,将Microsoft.Extensions.Http.DefaultHttpClientFactory的日志级别直接设为Warning(或更高级别如Error),即可彻底过滤这些Debug级别的冗余日志:
{ "Serilog": { "MinimumLevel": "Debug", "Override": { "Microsoft": "Information", "Microsoft.Extensions.Http.DefaultHttpClientFactory": "Warning" }, "WriteTo": [ { "Name": "MSSqlServer", "Args": { "connectionString": "Server=myerver", "tableName": "mytable" } } ] } }
补充说明
- Serilog的
Override配置遵循精确匹配优先原则,针对具体类别的级别设置会覆盖父级(如Microsoft)的规则。 - 将级别设为Warning既可以屏蔽冗余的清理日志,又不会影响该类别的重要日志(如HttpClient创建异常等Error级别日志)。
- 若需要更精准的控制,也可在代码中通过Serilog的Filter功能直接排除特定日志模板:
// 代码中配置示例 .Filter.ByExcluding(logEvent => logEvent.MessageTemplate.Text.Contains("HttpMessageHandler cleanup cycle"))
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

