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

.NET Core如何禁用内置日志仅通过log4net输出日志

问题原因

.NET Core通用主机默认会注册一组内置日志提供程序,控制台输出提供程序就在默认注册列表里。你代码中调用builder.Logging.AddLog4Net("log4net.config")的逻辑,只是在现有日志提供程序集合里追加了log4net输出渠道,没有移除默认的控制台提供程序,因此同一条日志会被两个独立的提供程序分别输出到控制台,最终出现重复打印的现象。

修复方案

修改Program.cs中的日志配置代码,在注册log4net之前先清空所有默认注册的日志提供程序:

// 清空所有默认注册的日志提供程序,移除内置的控制台、调试窗口等输出渠道
builder.Logging.ClearProviders();
// 仅注册log4net作为唯一的日志提供程序
builder.Logging.AddLog4Net("log4net.config");
注意事项
  • 如果后续需要额外增加调试日志、事件日志等其他输出渠道,在ClearProviders()方法之后单独调用对应提供程序的注册方法即可,不要恢复默认的全量提供程序注册。
  • 调整后所有日志输出规则完全由你的log4net.config控制:根日志级别为WARN、控制台附加器阈值为INFO,输出格式统一为你配置的%date [%thread] %level %logger - %message%newline格式。
  • 修复后启动项目,不会再出现info: Microsoft.Hosting.Lifetime[0]这类微软默认格式的系统日志,业务代码输出的日志也不会再重复打印两份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:18:21