2011-07-01 9 views
7

Chcę napisać tylko ślad stosu, gdy mam wyjątki, obecnie robię to jak tenPisanie ślad stosu do pliku dziennika tylko wtedy, gdy wyjątek rzucony

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

więc zawsze dostać w moim pliku dziennika.

EDIT:

Używam tego układu dla wszystkich moich logowania, więc kiedy nie ma żadnych wyjątków ja również uzyskać stos trace.But muszę go tylko wtedy, gdy mam jakiś wyjątek

kiedy mam wyjątek mam następujący wynik, a to, co muszę

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

jednak bez wyjątku:

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

Ale chcę tylko

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

Potrzebujesz pomysłów, jak to zrobić ...

+0

można oczekiwać, aby mieć ślad stosu inaczej? –

+0

Czy możesz wyjaśnić pytanie? Podaj nam jakiś kontekst? –

+0

@ Adrian, Dodano przykład –

Odpowiedz

2

Tak, w nlog można używać różnych poziomów Warn, Error Info itd. Można również rejestrować wyjątki ErrorException, WarnException, InfoException. IE

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

Jeśli chcesz pokazać wyjątek, użyj następującego polecenia.

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

Aktualizacja:

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

Usuń {StackTrace}

Aktualizacja:

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

Dostaniesz StackTrace z wyjątkiem.

+0

@Jetho, ale nie chcę uzyskać śledzenie stosu, gdy nie mam wyjątku –

+0

Jeśli używasz Error, zamiast ErrorException nie otrzymasz śledzenia stosu wyjątku. – Jethro

+0

Nadal dostaję wygląd: 2011-07-01 23: 29: 29.4367 | Debug | fffffffffffffffffffffffffffff | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main –

13

można użyć następujący układ:

${longdate}|${level}|${message} ${onexception:${exception:format=tostring} | ${stacktrace}} 
Powiązane problemy