1. ホーム
  2. java

[解決済み] log4jにスタックトレースを送信する方法は?

2022-04-24 12:36:30

質問

を実行すると、例外をキャッチして標準出力(例えばコンソール)に次のように表示されるとします。 e.printStackTrace() :

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 );
}

解決方法は?

例外を直接ロガーに渡す、例.

try {
   ...
} catch (Exception e) {
    log.error( "failed!", e );
}

スタックトレースをレンダリングするのはlog4j次第です。