2011-07-01 7 views
7

quiero escribir sólo el seguimiento de la pila cuando tengo excepciones conectarse, Actualmente hacerlo de esta maneraEscribir seguimiento de la pila de archivos sólo cuando excepción que se

layout="${longdate}|${level}|${message} ${exception:format=tostring} | ${stacktrace}" 

Así que siempre me dan en mi archivo de registro.

EDIT:

utilizo este diseño para toda mi registro, por lo que cuando no tengo ninguna excepción también conseguir la pila trace.But lo necesito sólo cuando tengo alguna excepción

cuando tengo una excepción he siguiente salida, y lo que necesito

2011-07-01 22:59:02.3782|Debug|fffffffffffffffffffffffffffff System.Exception: Exception of type 'System.Exception' was thrown. | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main 

Pero sin excepción:

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main 

Pero sólo quiero

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff 

Necesita ideas de cómo hacerlo ...

+0

se puede esperar a tener el seguimiento de la pila de otro modo? –

+0

¿Puedes aclarar la pregunta? Danos un poco de contexto? –

+0

@ Adrian, agregó un ejemplo –

Respuesta

2

Sí, en Nlog se pueden utilizar diferentes niveles warn, error Info etc Usted puede también registrar las excepciones con ErrorException, WarnException, InfoException. IE

logger.Error("This is an error message"); 

Si desea mostrar la excepción, utilice lo siguiente.

logger.ErrorException("This is an error with an Exception", e); 

Actualización:

<target name="Errors" xsi:type="File" fileName="${logDirectory}/ErrorLog.txt" layout="${longdate} ${message} ${exception:format=tostring}"/> 

Quitar {} StackTrace

Actualización:

Exception e = new Exception(); 
e.StackTrace // <= The exception holds the stack trace 

le aparecerá el StackTrace de la excepción.

+0

@Jetho, pero no quiero obtener el seguimiento de la pila cuando no tengo la excepción –

+0

Si usa Error, en lugar de ErrorException no obtendrá el rastreo de la pila de excepciones. – Jethro

+0

Todavía lo entiendo: 2011-07-01 23: 29: 29.4367 | Debug | fffffffffffffffffffffffffffff | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main –

13

puede utilizar la siguiente distribución:

${longdate}|${level}|${message} ${onexception:${exception:format=tostring} | ${stacktrace}} 
Cuestiones relacionadas