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

如何关闭ASP.NET MVC默认日志记录器?

移除ASP.NET MVC默认日志输出,保留Serilog日志

针对ASP.NET MVC同时输出Serilog和默认日志的问题,可通过以下步骤彻底禁用默认日志:

1. 修改Web.config,清除默认Trace监听器

ASP.NET MVC的默认日志大多通过System.Diagnostics.Trace输出,直接在配置文件中清空监听器是最可靠的方式:

<configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <clear /> <!-- 清空所有默认监听器 -->
      </listeners>
    </trace>
  </system.diagnostics>

  <system.web>
    <trace enabled="false" pageOutput="false" /> <!-- 禁用ASP.NET内置的页面Trace输出 -->
  </system.web>
</configuration>

2. 调整SerilogWebClassic配置,避免重复输出

确保Serilog不会将日志回写到Trace,同时接管所有请求日志:

Log.Logger = new LoggerConfiguration()
                .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
                .ReadFrom.AppSettings()
                .CreateLogger();

SerilogWebClassic.Configure(cfg => cfg
   .UseLogger(Log.Logger)
   .EnrichFromHttpRequest()
   .WriteToDiagnosticsTrace(false) // 禁止Serilog将日志输出到Trace,避免冗余
);

3. 补充:在Application_Start末尾移除残留监听器

如果Web.config修改后仍有默认日志输出,可在Global.asax.cs的Application_Start方法最后添加代码,确保所有初始化完成后清除监听器:

protected void Application_Start()
{
    // 其他初始化代码...

    // 清除Trace监听器
    System.Diagnostics.Trace.Listeners.Clear();
}

说明

之前调用System.Diagnostics.Trace.Listeners.Clear()无效,是因为ASP.NET在应用启动过程中可能会自动重新添加默认监听器,因此需要通过Web.config提前禁用,或在所有初始化完成后执行清除操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:34:57