2014-04-24 90 views
2

我有問題日誌異常只記錄消息。Nlog錯誤(消息,異常)忽略異常

NLOG配置:

<target name="logfile" 
     xsi:type="File" 
     fileName="log.txt" 
     layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} | ${exception:format=tostring}" /> 



<logger name="*" 
     minlevel="Info" 
     writeTo="logfile" /> 

用法:

private static Logger _logger = LogManager.GetCurrentClassLogger(); 

    _logger.Error("my message", new Exception("my exception")); 

日誌輸出:

2014-04-24 18:17:29.0841 | PC_NAME | 6464 | APP_NAME.vshost | Error | AppName.ViewModel | my message | 

例外是忽略。

我發現了一些thread,但對我來說不行。

回答

1

Nlog正在使用特殊方法記錄使用<loglevel>Exception命名模式的異常。

所以你的情況,你需要使用ErrorException方法,以你的異常得到正確記錄:

private static Logger _logger = LogManager.GetCurrentClassLogger(); 

_logger.ErrorException("my message", new Exception("my exception")); 
+0

NLOG的ErrorException方法已被棄用。 –

0

其實,void Error(string message, Exception exception);是過時

您可以使用ILogger.Error(Exception, string)方法如下面

catch (Exception e) 
{ 
Log.Error(e, "it happens"); 
} 

${onexception}的一點修改佈局。這將檢查是否有要記錄異常

<target name="logfile" 
     xsi:type="File" 
     fileName="log.txt" 
     layout="${longdate} | ${machinename} | ${processid} | ${processname} | ${level} | ${logger} | |${message} ${onexception:| ${exception:format=tostring}}" /> 

/>