我想弄清楚为什么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的错误吗?
答案 0 :(得分:12)
如果您在AspNetCore中使用NLog,则可以通过与UseNLog
或AddNLog
一起调用ConfigureNLog
来解决问题。
您应该只将UseNLog
与NLog.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>