Digamos que capturar una excepción y obtener lo siguiente en la salida estándar (como, por ejemplo, la consola) si lo hace un e.printStackTrace():¿Cómo enviar una stacktrace a 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)
Ahora desea enviar este lugar a un registrador como, por ejemplo, log4j para obtener lo siguiente:
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)
¿Cómo puedo hacer esto?
try {
...
} catch (Exception e) {
final String s;
... // <-- What goes here?
log.error(s);
}
El registrador toma un objeto por su primer argumento y la voluntad toString() de ella. Sin embargo, el segundo argumento debe ser Throwable y muestra el seguimiento de la pila. –
Nunca sé qué meter en la primera Cadena, generalmente acabo haciendo 'log.error (e.getLocalizedMessage(), e)' que es totalmente redundante. ¿Maneja un nulo para el primer argumento? –
@Mark: intente darle un mensaje que sea más pertinente para el contexto que el mensaje de la excepción, p. ¿Qué estaba tratando de hacer en ese momento? – skaffman