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

Blazor Server应用Serilog日志冗余:如何仅记录自定义业务日志?

解决Serilog仅记录自定义日志、排除.NET/Azure冗余日志的问题

核心问题分析

你当前的配置错误在于把EF相关的日志级别设置放在了Serilog根节点,而Serilog的命名空间覆盖规则必须放在MinimumLevel.Override下,这就是之前设置无效的原因。

正确配置方案

1. 仅保留自定义应用日志(推荐)

要完全只记录你代码中通过_log.LogInformation/_log.LogError生成的日志,最直接的方式是:

  • 将默认日志级别设为None,关闭所有日志输出
  • 仅显式允许你自己应用的根命名空间输出日志

修改appsettings.json中的Serilog配置:

"Serilog": {
  "MinimumLevel": {
    "Default": "None", // 默认关闭所有日志
    "Override": {
      "YourAppNamespace": "Information" // 替换为你实际的项目根命名空间
      // 若需保留框架关键错误日志,可添加:
      // "Microsoft.AspNetCore": "Error"
    }
  },
  "WriteTo": [
    {
      "Name": "Console",
      "Args": {
        "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u4}: {Message:lj}{NewLine}{Exception}]"
      }
    }
  ]
}

注意:YourAppNamespace是你项目的根命名空间,比如你注入ILogger<HomePage>时,HomePage所在的命名空间。

2. 针对性排除特定框架日志

如果需要保留部分框架日志,但要过滤EF Core、Azure等冗余内容,将规则放在MinimumLevel.Override下:

"Serilog": {
  "MinimumLevel": {
    "Default": "Information",
    "Override": {
      "Microsoft.AspNetCore": "Warning", // 仅保留AspNetCore警告及以上日志
      "Microsoft.EntityFrameworkCore.Database.Command": "None", // 关闭EF命令日志
      "Microsoft.EntityFrameworkCore.Infrastructure": "None", // 关闭EF基础设施日志
      "Azure": "Warning" // 部署到Azure后,仅保留Azure警告及以上日志
    }
  },
  "WriteTo": [
    {
      "Name": "Console",
      "Args": {
        "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u4}: {Message:lj}{NewLine}{Exception}]"
      }
    }
  ]
}

3. Azure App Service部署后的处理

部署到Azure后,平台本身的启动、健康检查等日志会自动整合,但Serilog的配置只会过滤你的应用日志。若需调整Azure平台日志输出,可在Azure门户的应用服务 > 诊断设置中修改日志类别和级别。

验证配置

修改配置后重启应用,控制台将仅输出你自定义的日志内容,所有框架、EF、Azure冗余日志都会被过滤。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:52:44