2012-03-21 186 views
1

有時nLog沒有記錄所有調試信息(某些log.Debug ...在調試文件中缺失),有誰知道爲什麼會發生這種情況以及如何避免這種情況?nLog缺少日誌數據

這裏是我的n日誌配置

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <variable name="appTitle" value="Service"/> 
    <targets async="true"> 
    <target name="fallbackDebug" xsi:type="FallbackGroup" returnToFirstOnSuccess="true"> 
     <target xsi:type="File" fileName="C:\Logs\${date:format=yyyyMMdd}_Debug.txt" layout="..."/> 
     <target xsi:type="File" fileName="C:\Logs\${date:format=yyyyMMdd}_Debug_bu.txt" layout="..."/> 
    </target> 
    </targets> 
    <rules> 
    <logger name="*" levels="Trace,Debug,Error,Fatal"  writeTo="fallbackDebug" /> 
    </rules> 
</nlog> 

在代碼中我使用以下

private static Logger log = LogManager.GetCurrentClassLogger(); 
... 
log.Debug("Some debug info"); 

謝謝!

+0

你怎麼知道的東西不見了?你能提供一個小樣本應用程序來重現這個問題嗎? – 2012-03-21 14:26:09

+0

我無法提供再現該問題的小應用程序,因爲它僅在我們的系統中發生,而且這個系統非常龐大,我們在短時間內記錄了大量調試信息。我知道缺少一些東西,例如,在創建DB中的訂單之前,我正在記錄該操作。如果我在DB中查看,則會顯示訂單,但不會顯示與該操作對應的日誌。 – zvjerka24 2012-03-21 15:19:18

+0

聽起來很奇怪。你可以添加一些獨立於NLog的簡單日誌記錄,看看它是否有效。如果它不起作用,它不是一個NLog的問題,但與您的代碼似乎執行一些插入訂單的其他代碼。如果你的簡單日誌工作正常,但是NLog沒有,你證明了NLog忽略了一些東西。 – 2012-03-21 15:21:46

回答

1

您必須在最後調用LogManager.Flush()方法。

例子:

private static Logger log = LogManager.GetCurrentClassLogger(); 
... 
log.Debug("Some debug info"); 
... 
LogManager.Flush();