說你捕獲異常,並得到在標準輸出下面的(比如說,控制檯),如果你做一個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