it-swarm.com.de

Stacktrace im Logger bekommen

Ich verwende log4j, um meine Ausnahmen zu protokollieren. Ich möchte protokollieren, was ich in e.printStackTrace(); bekomme
Mein Code sieht folgendermaßen aus:

try {

} catch(Exception e) {
    log.error("Exception is:::" + e);
}

Der Inhalt, den ich protokolliere, sieht jedoch so aus:

2012-02-02 12:47:03,227 ERROR [com.api.bg.sample] - Exception in unTech:::[Ljava.lang.StackTraceElement;@6ed322
2012-02-02 12:47:03,309 ERROR [com.api.bg.sample] - Exception is :::Java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

Aber den Inhalt, den ich erwarte, ist:

Java.io.IOException: Not in GZIP format
at Java.util.Zip.GZIPInputStream.readHeader(Unknown Source)
at Java.util.Zip.GZIPInputStream.<init>(Unknown Source)
at Java.util.Zip.GZIPInputStream.<init>(Unknown Source)
at com.api.bg.sample.unGZIP(sample.Java:191)
at com.api.bg.sample.main(sample.Java:69)

Ich habe versucht e.getMessage(), e.getStackTrace();, bekomme aber nicht die volle Stacktrace. Irgendwelche Vorschläge?

39
JNPW

Sie müssen das Zwei-Argument-Formular verwenden

log.error("my logging message", exception)

Unter http://www.devdaily.com/blog/post/Java/how-print-exception-stack-trace-using-log4j-commons finden Sie weitere Einzelheiten.

58
Brian Tarbox

Ändern Sie Ihre Protokollierungsanweisung in:

log.error("Exception is: ", e);
6
Jonathan

Es ist eigentlich log4j, das das Drucken der gesamten Zeitstapelverfolgung verhindert. Sie sollten jedoch die Ausnahme als zweiten Parameter für die Fehlermethode festlegen.

1
Kurt Du Bois
log.log(LEVEL.ERROR,e.getMessage(),e);
0
Mansa