NLog在VS 2017 .NET Core项目中无法工作

4
我正在尝试将NLog加载到我的.NET Core Web应用程序中,使用VS 2017按照教程。该教程使用project.json文件,而我的VS 2017项目使用csproj文件。
第一件事是将 NuGet包添加到我的Web项目中。
然后,在我的Startup.cs文件中,在 Startup()方法的顶部添加以下内容:
env.ConfigureNLog("nlog.config");

接下来,在我的Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime)方法中,我在顶部添加了以下内容:
//add NLog to ASP.NET Core
loggerFactory.AddNLog();

//add NLog.Web
app.AddNLogWeb();
我在我的Web应用程序根目录下添加了一个nlog.config文件,并且定义与链接教程中相同。
最后,我将ILogger<MyController> logger依赖注入到Web API控制器中,并尝试调用LogInformation()。 我没有收到任何错误消息,但它没有将任何内容记录到我的临时目录。

什么临时目录? - mason
@mason 在教程中定义的那个(c:\temp\nlog.config)。 - mellis481
还复制了NLog.xsd文件。 - mellis481
@Julian 我正在使用 NLog.Web.AspNetCore 4.3.1 和 NLog.Extensions.Logging 1.0.0-rtm-beta4。我已经设置好了内部日志记录... - mellis481
@Julian 是的,Windows 7专业版。 - mellis481
显示剩余6条评论
2个回答

0

我按照同样的教程操作,遇到了和你一样的问题!

  1. 重新启动您的计算机
  2. 按照建议此处,打开NLog设置throwExceptions="true"。这将允许NLog自己报告其自身的异常。
  3. 通过设置文件属性,确保NLog.config被复制到输出文件夹中。enter image description here
  4. 在本地运行时,请检查您的解决方案文件夹和子文件夹,bin\Debug\netcoreapp2.1。在调试模式下运行时,NLog.config必须存在。
  5. 即使使用了始终复制,我的文件也没有被复制,因为Visual Studio在NLog.config和nlog.config之间混淆了。不知何故,重新启动解决了这个问题 - 我还提交了我的更改到Git。
  6. connectionStringName在DatabaseTarget(对于.NET 2.1)上不受支持。请改用connectionString。有关详细信息,请参见此GitHub问题。有关修复方法,请参见此SO答案

请勿启用 throwExceptions="true"。这在任何情况下都不应该被推荐使用,这就像是将一支上膛的枪口对准自己的脚一样危险。如果要进行故障排除,请使用 NLog InternalLogger。 - Rolf Kristensen
NLog故障排除文档建议使用throwExceptions="true"。但是你是正确的,在生产环境中不应该打开它。 - Jess
猜测Wiki应该更新以推广throwConfigExceptions="true"和使用InternalLogger,将禁止设置作为最后的选择。 - Rolf Kristensen

0
尝试将配置移动到App.config中。请参阅。
 NLog.Extensions.Logging-master\examples\net-fullframework-example\src\net-
 app-using-nlog\App.config as example

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接