我将一个Web API项目从ASP.NET Core 1.x升级到ASP.NET Core 2.0,只需极少的代码更改。
运行Web API时,命令提示符会像平常一样打开。
但是,每条信息都是重复的。
这是一个ASP.NET Core错误还是升级后我的问题?
更新:
我在Startup.cs配置方法中执行以下操作:
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
当我删除它没有重复。这不再需要了吗?
WebHost.CreateDefaultBuilder
为您设置了许多常规内容,为每个单独的ASP.NET Core 2项目保存相同的代码(就像在ASP.NET Core 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,但从那时起它似乎没有太大变化。
我遇到了同样的问题:使用NLog,所有信息都被复制并以这种方式记录。对我来说,解决问题的方法是从loggerFactory.AddNLog()
的Configure
中移除Startup.cs
。我正在使用Core 2.0。