2012-03-21 191 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();