You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Serilog配置Microsoft日志级别为Warning仍输出Information级请求日志如何解决

问题根因

你遇到的是Serilog接管ASP.NET Core日志管线不彻底导致的级别过滤规则不生效问题,核心原因是UseSerilog的调用位置错误,导致ASP.NET Core默认的日志规则没有被完全覆盖,内置的Microsoft命名空间下的请求日志依然按默认级别输出。

解决方案

1. 修正Serilog注册位置

UseSerilog需要直接挂载在HostBuilder层级,而不是嵌套在ConfigureWebHostDefaults委托内,这样才能完全替换默认日志管线。修正后的启动代码如下:

return Host.CreateDefaultBuilder(args)
    // 把UseSerilog移到HostBuilder层级,在ConfigureWebHostDefaults之前调用
    .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
        .ReadFrom.Configuration(hostingContext.Configuration)
        .Enrich.FromLogContext())
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });

2. 补全Sink程序集配置

你当前配置的Using节点只声明了Console sink的程序集,缺少Seq和File sink对应的程序集引用,虽然不影响级别过滤,但会导致sink加载异常,补充后配置如下:

"Serilog": {
  "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Seq", "Serilog.Sinks.File" ],
  // 其余原有配置保持不变
}

3. 兜底精准过滤规则

如果修改后仍有多余的请求日志输出,可以先在Console输出模板中添加{SourceContext}字段,确认日志的真实命名空间,再补充精准的覆盖规则,比如常见的请求日志所属命名空间的过滤配置:

"MinimumLevel": {
  "Default": "Information",
  "Override": {
    "Microsoft": "Warning",
    "Microsoft.AspNetCore.Hosting.Diagnostics": "Warning",
    "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Warning",
    "Microsoft.AspNetCore.HttpLogging": "Warning",
    "System": "Warning"
  }
}

内容的提问来源于stack exchange,提问作者Zoinky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:36:03