2011-01-13 173 views
44

NLogでデフォルトのレイアウトを使用すると、例外の名前だけが表示されます。 私はlog4jxmleventレイアウトが例外について何も印刷しないと言われました。 どのようなレイアウトが私を助けますか?NLogで例外を記録する際にスタックトレースを取得する方法は?

例コード:

try 
{ 
    throw new SystemException(); 
} 
catch (Exception ex) 
{ 
    logger.Error("oi", ex); 
} 

デフォルト・レイアウト・出力:

2011-01-14 09:14:48.0343|ERROR|ConsoleApplication.Program|oi 

log4jxmlevent出力:

<log4j:event logger="ConsoleApplication.Program" 
      level="ERROR" 
      timestamp="1295003776872" 
      thread="9"> 
<log4j:message>oi</log4j:message> 
<log4j:NDC /> 
<log4j:locationInfo class="ConsoleApplication.Program" 
        method="Void Main(System.String[])" 
        file="C:\Users\User\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs" 
        line="21" /> 
<nlog:eventSequenceNumber>3</nlog:eventSequenceNumber> 
<nlog:locationInfo assembly="ConsoleApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
<log4j:properties> 
    <log4j:data name="log4japp" 
       value="true" /> 
    <log4j:data name="log4jmachinename" 
       value="MACHINE" /> 
</log4j:properties> 

答えて

80

IはLogger. + Lのいずれかを使用しなければなりませんでしたEVEL + Exception方法:${exception}レイアウトが含まれます。レイアウトで次に

catch(Exception crap) 
{ 
    log.Error("Something went horribly wrong.", crap); 
} 

logger.ErrorException("ex", ex); 

とカスタムレイアウト

layout="${exception:format=ToString,StackTrace}${newline}" 
+4

既存のレイアウトに加えて、このですか? – Shane

+0

@Shane確かに、スタックトレース –

+8

FYIだけが必要な場合を除き、この方法は廃止予定です。 https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions – Clay

12

How to Log Exceptionsに記載されるように、NLog 4.0で始まる、このように例えば、Errorの最初のパラメータとして例外を渡す:

logger.Error(ex, "Nickers!"); 

NLog設定(例: web.configまたはapp.config)で、レイアウトの${exception:format=tostring}を含めるには、このような例:

<target name="f" type="File" layout="${longdate} ${message} ${exception:format=tostring}"/> 
+1

例外のレイアウトに[条件付き書式](http://nlog-project.org/2011/04/20/exception-logging-enhancements.html)を使用できます。次は、デフォルトのレイアウトに近いです。$ {message} $ {onexception:$ {newline} $ {例外:フォーマット= tostring}} "/>'。 – mcdon

関連する問題