【问题标题】:Duplicate info messages in console of Web API after upgrading to ASP.NET Core 2.0升级到 ASP.NET Core 2.0 后,Web API 控制台中的重复信息消息
【发布时间】:2018-03-24 10:58:05
【问题描述】:

我将一个 Web API 项目从 ASP.NET Core 1.x 升级到 ASP.NET Core 2.0,代码更改非常少。

运行 WebAPI 时,命令提示符会正常打开。

但是,每条信息消息都是重复的。

这是 ASP.NET Core 错误还是升级后我的问题?

更新:

我在 Startup.cs Configure 方法中做了以下操作:

    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

当我删除它时,没有重复。这不再需要了吗?

【问题讨论】:

标签: c# asp.net-web-api asp.net-core


【解决方案1】:

WebHost.CreateDefaultBuilder 为您设置了许多常规 东西,以保存必须为每个单独的 ASP.NET Core 2 项目生成的相同代码(就像在 ASP.NET 中一样核心 1.x)。

您可以看到WebHost.CreateDefaultBuilder here 的代码。对于您的特定场景,如果您稍微查看一下源代码中的further down,您会看到以下内容:

logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();

因此,您不再需要自己添加此代码。这样做时,它会被添加两次,这最终会进行两次日志记录两次

如果您想更详细地了解这些更改,Andrew Lock 有一个很好的write-up 了解其工作原理。他还深入探讨了如何覆盖其中一些默认值等的一些细节。请注意,这篇文章基于 ASP.NET Core 2 预览版 1,但最终版本中的情况或多或少是相同的。

【讨论】:

  • ASP.NET Core 3.0 中的类似问题。只有几十条日志消息被重复,但结果却是相同的分辨率。在 Program.cs 和 Startup.cs 配置方法中添加了 Log4net。从配置中删除修复了它。
【解决方案2】:

我遇到了同样的问题:使用 NLog,所有信息都以这种方式复制和记录。对我来说,解决问题的方法是从Startup.csConfigure 中删除loggerFactory.AddNLog()。我正在使用 Core 2.0。

【讨论】:

    【解决方案3】:

    就此而言,可以通过 CreateDefaultBuilder() 清除默认注册的日志记录提供程序。

    Host.CreateDefaultBuilder(args).ConfigureLogging((hostContext, loggingBuilder) =>
    {
        loggingBuilder.ClearProviders();
    });
    

    所以日志不会输出两次,也不必自己配置主机。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      相关资源
      最近更新 更多