2011-01-13 12 views
44

Cuando uso el diseño predeterminado con NLog, solo se imprime el nombre de la excepción. Me han dicho que el diseño log4jxmlevent no imprime nada sobre la excepción. ¿Qué diseño me ayudará?¿Cómo obtener el seguimiento de pila al registrar excepciones con NLog?

código

Ejemplo:

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

predeterminado de salida de Presentación: salida

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> 

Respuesta

80

I tenía que usar el uno de los Logger. + L evel + Exception métodos:

logger.ErrorException("ex", ex); 

y una costumbre de diseño

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

¿Es esto además de un diseño existente? – Shane

+0

@Shane seguramente, a menos que solo necesite el seguimiento de la pila –

+8

FYI, este enfoque está en desuso. https://github.com/NLog/NLog/wiki/How-to-Log-Exceptions – Clay

12

como se documenta en How to Log Exceptions, comenzando con Nlog 4,0, pase la excepción como el primer parámetro para Error, por ejemplo como este:

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

En la configuración de NLog (p. en web.config o app.config), incluyen ${exception:format=tostring} en el diseño, por ejemplo, así:

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

Puede usar [Conditional Formatting] (http://nlog-project.org/2011/04/20/exception-logging-enhancements.html) en el diseño para excepciones . Lo siguiente está cerca del diseño predeterminado ''. – mcdon

Cuestiones relacionadas