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

.NET Core下如何过滤API调用冗余日志?(NLog配置问题)

.NET Core中过滤API冗余日志的解决方案

我需要在.NET Core中过滤掉API调用产生的冗余日志,避免日志污染。尝试通过appsettings.json配置日志但未生效,目标是完全避免这类日志,或者至少减少Trace/Info级别的输出。项目中Program/Startup使用NLog,其他部分使用Microsoft扩展日志。

Trace日志示例:
sample trace logs

更新(原配置及问题)

appsettings.json配置:

"Logging": {
  "LogLevel": { 
    "Default": "Error",
    "Microsoft": "Error",
    "Microsoft.Hosting.Lifetime": "Error",
    "Microsoft.AspNetCore": "Error" // 原本以为这会生效
  },
  "EventLog": {
    "LogLevel": {
      "Default": "None",
      "Microsoft": "None",
      "Microsoft.Hosting.Lifetime": "None"
    }
  }
},

nlog.config原配置(无效):

<rules>
  <logger name="*" minLevel="Info" writeTo="file, kafka, console" />
  <logger name="Microsoft.AspNetCore*" minLevel="None" final="true" />
</rules>
</nlog>

Program代码:

public static void Main(string[] args)
{
    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ProjectConstants.FOLDER_CONFIGS);
    var logger = NLogBuilder.ConfigureNLog(Path.Combine(path, "nlog.config")).GetCurrentClassLogger();
    logger.Info("init main");
    var builder = new ConfigurationBuilder()
        .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
        .AddJsonFile(Path.Combine(path, "appsettings.json"), true);
    Configuration = builder.Build();
    CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
      .ConfigureWebHostDefaults(webBuilder =>
      {
          webBuilder.UseKestrel()
              .UseConfiguration(Configuration)
              .UseStaticWebAssets()
              .UseStartup<Startup>()
              /*
              .ConfigureLogging(logging =>
              {
                  logging.ClearProviders();
                  logging.SetMinimumLevel(LogLevel.Trace);
              })
              */
              .UseNLog();
      }).UseWindowsService().UseSystemd();
}

API日志仍会自动生成:
API日志示例

<logger name="Microsoft.AspNetCore*" minLevel="None" 配置完全无效。

有效解决方案

感谢Qiang Fu提供的正确配置,修改nlog.config中的<rules>节点为以下内容即可实现需求:

<logger name="Microsoft.*" minLevel="Trace" maxLevel="Info" final="true" />
<logger name="Microsoft.*" minLevel="Warn" maxLevel="Fatal" writeTo="file" final="true" />
<logger name="*" minLevel="Info" writeTo="file, kafka, console" />  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:58:13