NLog在同一文件中记录错误两次

时间:2015-11-09 16:44:59

标签: nlog

我想弄清楚为什么NLog会记录我的错误两次。

这是我的配置文件:

<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="debug" xsi:type="File" FileName="DebugTestFile.log" layout="${message} ${exception:format=tostring}" />
  </targets>
  <rules>
    <logger name="*" level="Debug" writeTo="debug" />
  </rules>
</nlog>

现在,当我调用NLog.Debug(myException);输出时,我的异常会打印两次。

如果我拨打NLog.Debug(myException, "My Test Message String");,则错误会与我的测试消息一起打印出来。

我究竟做错了什么?根据{{​​3}}我的配置是正确的。

我尝试将布局更改为以下内容:layout="${message},当我运行NLog.Debug(myException);时,它只打印错误一次。

然而,现在当我运行NLog.Debug(myException, "My Test Message String");时,它只打印了我的消息而没有来自异常的错误。

这可能是NLog的错误吗?

2 个答案:

答案 0 :(得分:12)

如果您在AspNetCore中使用NLog,则可以通过与UseNLogAddNLog一起调用ConfigureNLog来解决问题。

您应该只将UseNLogNLog.Web.LogBuilder.ConfigureNLog一起使用(停止使用AddNLog):

https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2#4-update-programcs

答案 1 :(得分:1)

这似乎是因为配置文件中的规则,只需更改每个记录器的writeTo,在我的情况下,我能够通过以下相同的步骤来解决此问题:

示例:

有问题的早期配置文件:

<rules>
  <logger name="*" minlevel="Info" writeTo="console" />
  <logger name="*" minlevel="Error" writeTo="console" />
</rules>

更正了配置文件:

<rules>
  <logger name="*" minlevel="Info" writeTo="console" />
  <logger name="*" minlevel="Error" writeTo="console1" />
</rules>