2015-11-09 75 views
0

我想弄清楚爲什麼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");,那麼這個錯誤會與我的測試消息一起打印出來。

我究竟做錯了什麼?根據https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions我的配置是正確的。

我試着改變我的佈局爲:layout="${message},當我跑NLog.Debug(myException);它只打印錯誤一次。

但現在當我跑NLog.Debug(myException, "My Test Message String");它只打印我的消息沒有來自異常的錯誤。

這可能是一個NLog的錯誤?

+0

這似乎是按照設計。您正在傳遞一個參數(您的例外),用於同時滿足兩個佈局渲染器。 – Joe

+0

@Joe但是,如果我從配置中刪除錯誤,則在調用異常,字符串方法時,不會打印出錯誤。這是不對的,必須有我缺少的東西或系統中的錯誤。 – Bojan

+0

@Bagzli你解決了這個問題嗎? –

回答

0

這似乎是因爲在配置文件中的規則,只是改變的writeTo每個記錄器,在我的情況,我能夠按照同樣的步驟reolve這個問題:

例子:

其爲具有較早的配置文件的問題:

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

請注意,我的配置文件中只有一條規則 – Bojan

相關問題