首页 文章

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

提问于
浏览
3

我试图弄清楚为什么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"); ,那么错误将与我的测试消息一起打印出来 .

我究竟做错了什么?根据https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions我的配置是正确的 .

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

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

这可能是NLog的错误吗?

2 回答

  • 10

    如果您在AspNetCore中使用NLog,则可以通过与 AddNLogConfigureNLog 一起调用_2688865来引起问题 .

    你应该只使用 UseNLogNLog.Web.LogBuilder.ConfigureNLog (停止使用 AddNLog ):

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

  • 1

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

    Example:

    早期的配置文件有问题:

    <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>
    

相关问题