说你捕获异常,并得到在标准输出下面的(比如说,控制台),如果你做一个e.printStackTrace():如何发送堆栈跟踪到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)
现在,我想送这个来代替公司,比如,log4j的一个记录器,以获得以下内容:
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)
我怎样才能做到这一点?
try {
...
} catch (Exception e) {
final String s;
... // <-- What goes here?
log.error(s);
}
记录器接受一个对象为它的第一个参数,将的toString()它。但是第二个参数必须是Throwable并显示堆栈跟踪。 – 2010-12-03 16:50:20
我从来不知道什么东西进入第一个String,通常我只落得做`log.error(e.getLocalizedMessage(),E)`这完全是多余的。它是否为第一个参数处理空值? – 2010-12-03 16:52:11
@Mark:试着给它一个比例外消息更适合上下文的消息,例如:那时它究竟在做什么? – skaffman 2010-12-03 16:53:37