yanom blog

様々な技術について書きます

アプリ終了時のログが出力されない [log4j2]

仕事でlog4j2を使ってログ出力していたときの話ですが、アプリを終了した際にログが出力されずに困っていました。
具体的には以下のような感じです。

//終了時に実行される
log.info("end app...");  //これは出力される
//色々終了処理
log.info("finish..."); //これが何故か出力されない

そこでprintで画面に出力してみたところ、print文のログは出力されてました。
そのため、log4j2のせいでログが出力されていないことがわかりました。

そこで、色々調べて最終的に以下公式サイトを眺めていたところ、このような記述がありました。

Configuration

  • shutdownHook
    • Specifies whether or not Log4j should automatically shutdown when the JVM shuts down. The shutdown hook is enabled by default but may be disabled by setting this attribute to "disable"

そこで、log4j.xmlにdisableの項目を追加したところ、最後までちゃんとログが出力されるようになりました!

<Configuration disable="false">
//...
</Configuration>

気づくまでに結構時間がかかったんですが、やっぱり困ったら公式サイトを見るべきですね。。。