2011-01-13 7 views
44

Wenn ich das Standardlayout mit NLog verwende, wird nur der Name der Ausnahme ausgegeben. Mir wurde gesagt, dass das log4jxmlevent-Layout nichts über die Ausnahme ausgibt. Welches Layout wird mir helfen?Wie erhält man den Stack-Trace beim Loggen von Exceptions mit NLog?

Beispielcode:

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

Standard-Layout Ausgabe:

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

log4jxmlevent Ausgang:

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

Antwort

80

ich die eine der Logger. + L zu verwenden, hatte evel + Exception Methoden:

logger.ErrorException("ex", ex); 

und ein benutzerdefiniertes Layout

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

Ist dies zusätzlich zu einem bestehenden Layout? – Shane

+0

@Shane sicherlich, es sei denn, Sie brauchen nur die Stack-Trace –

+8

FYI, dieser Ansatz ist veraltet. https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions – Clay

12

Wie in How to Log Exceptions dokumentiert, mit NLog Ausgangs 4,0, passieren die Ausnahme als ersten Parameter zu Error, zum Beispiel wie folgt aus:

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

In der NLog-Konfiguration (z.B. in web.config oder app.config) umfasst ${exception:format=tostring} im Layout, zum Beispiel wie folgt aus:

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

Kann [Bedingte Formatierung] (http://nlog-project.org/2011/04/20/exception-logging-enhancements.html) im Layout für Ausnahmen verwenden . Das Folgende ist nahe dem Standardlayout ''. – mcdon