Dites que vous attrapez une exception et obtenir ce qui suit sur la sortie standard (comme, par exemple, la console) si vous faites un e.printStackTrace():Comment envoyer un stacktrace à log4j?
java.io.FileNotFoundException: so.txt
at java.io.FileInputStream.<init>(FileInputStream.java)
at ExTest.readMyFile(ExTest.java:19)
at ExTest.main(ExTest.java:7)
Maintenant, je veux envoyer ce lieu à un enregistreur comme, par exemple, log4j pour obtenir ce qui suit:
31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt
32204 [AWT-EventQueue-0] ERROR at java.io.FileInputStream.<init>(FileInputStream.java)
32235 [AWT-EventQueue-0] ERROR at ExTest.readMyFile(ExTest.java:19)
32370 [AWT-EventQueue-0] ERROR at ExTest.main(ExTest.java:7)
Comment est-ce que je peux faire ceci?
try {
...
} catch (Exception e) {
final String s;
... // <-- What goes here?
log.error(s);
}
L'enregistreur prend un objet pour son premier argument et de la volonté toString() il. Cependant, le second argument doit être Throwable et affiche la trace de la pile. –
Je ne sais jamais quoi mettre dans la première chaîne, d'habitude je finis par faire 'log.error (e.getLocalizedMessage(), e)' qui est totalement redondant. Est-ce qu'il gère un null pour le premier argument? –
@Mark: Essayez de lui donner un message qui est plus pertinent au contexte que le message de l'exception, par ex. qu'essayait-il réellement de faire à ce moment-là? – skaffman