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

Azure Web应用如何阻止Microsoft.AspNetCore.Hosting.Diagnostics日志输出?

解决方法

1. 修正Serilog配置拼写错误并添加精准级别覆盖

你配置里的Serilog:MinimimLevel:Override存在拼写错误,正确键名是Serilog:MinimumLevel:Override。先修正该错误,再针对Microsoft.AspNetCore.Hosting.Diagnostics设置None级别直接屏蔽其日志输出:

// appsettings.json 示例配置
{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft.AspNetCore.Hosting.Diagnostics": "None"
      }
    },
    // 你的其他Serilog配置(自定义格式化器、Sink等)
  }
}

2. 用Serilog过滤器精准排除健康检查请求日志

如果全局屏蔽该上下文日志会影响其他有用日志,可通过Serilog过滤器只排除/api/health路径的相关日志:
在Program.cs配置Serilog时添加过滤规则:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(builder.Configuration)
    .Filter.ByExcluding(evt => 
        evt.Properties.TryGetValue("RequestPath", out var path) && 
        path.ToString().Equals("\"/api/health\"") &&
        evt.SourceContext == "Microsoft.AspNetCore.Hosting.Diagnostics")
    // 你的其他Serilog配置项
    .CreateLogger();

3. 直接禁用健康检查中间件的日志输出

从源头阻止日志生成,在配置健康检查路由时关闭日志功能:

app.MapHealthChecks("/api/health", new HealthCheckOptions
{
    LoggingEnabled = false
});

也可以全局配置抑制健康检查输出:

builder.Services.AddHealthChecks()
    .AddCheck<YourCustomHealthCheck>("custom-health-check")
    .Configure<HealthCheckOptions>(options =>
    {
        options.SuppressHealthCheckOutput = true;
    });

4. 确保仅保留Serilog日志提供者

如果仍有非自定义格式的日志输出,说明ASP.NET Core默认日志提供者未被移除。在Program.cs中清理默认提供者,只保留Serilog:

// 替换默认日志系统为Serilog
builder.Host.UseSerilog();

// 清除所有默认日志提供者
builder.Logging.ClearProviders();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:11