web-dev-qa-db-fra.com

Obtenir stacktrace dans l'enregistreur

J'utilise log4j pour enregistrer mes exceptions. Je veux enregistrer tout ce que je reçois dans e.printStackTrace();
Mon code ressemble à ceci:

try {

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

Mais le contenu que je me connecte ressemble à ceci:

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

Mais le contenu que j'attends est:

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)

J'ai essayé e.getMessage(), e.getStackTrace(); mais je ne reçois pas le stacktrace complet. Aucune suggestion?

39
JNPW

Vous devez utiliser la forme à deux arguments

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

Voir http://www.devdaily.com/blog/post/Java/how-print-exception-stack-trace-using-log4j-commons pour plus d'informations.

58
Brian Tarbox

Changez votre relevé de consignation en:

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

En fait, c'est log4j qui empêche l'impression de la pile d'empreintes à temps plein. Vous devez toutefois définir l'exception comme second paramètre de la méthode error.

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