- 締切済み
log4j DailyRollingFileAppenderについて
いつもお世話になっています。 現在、log4jを使用してログをファイルに出力しています。 DailyRollingFileAppenderを使用し、日にち毎にリネームしています。 しかし、DailyRollingFileAppenderだとNullPointerExceptionなど想定していないExceptionが出力されません。 行いたいことは、 「ログファイルを日毎にリネームして想定していないExceptionも出力する」ということです。 log4jをいろいろ調べてみて、DailyRollingFileAppenderでExceptionを出力するには、catchしてログを出力するような設定をしなければ出力できないのでは?と思っています。 変わって、ConsoleAppenderでは想定していないExceptionも出力されます。 これは、コンソール出力のためだと思っています。 (検討違いでしたら、教えてください<(_ _)>) ここで質問なのですが、 1.DailyRollingFileAppenderで想定していないExceptionを出力することはできるのでしょうか? 2.1が不可能な場合、ConsoleAppenderをファイルに出力し、日毎にリネームすることができるのでしょうか? ご存知の方がいらしたら、ぜひ教えてください! 早急に直したいのですが、まったく前に進みません。私の力不足なんですが・・・ よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
ちょっと状況が把握できないのですが、 log4j.propertiesの設定には DailyRollingFileAppenderとConsoleAppenderの設定があるということですか? で、NullPointerExceptionが出力されるのはコンソールだけということですか? もし、そうだとするとNullPointerExceptionがコンソールにしか出力されないのは、Tomcatがコンソールに出力しているだけだと思います。 今すぐに確認できないのですが、 NullPointerExceptionの出力形式も、あなたの設定したlog4jのスタイルになっていますか?
どのAppendarを使っても、log出力の処理を記述してない限りログに出力されることはないと思います。 コンソールに出力されているのは、log4jじゃない何かが出力してるのではないでしょうか? また、環境がよくわからないのですが、NullPointerExceptionはどこで発生してるのですか? サーブレットですか?Mainクラスですか?Appendarクラスですか? それによっても対応が変わってくると思います。 また、余計なお世話かもしれませんが、 想定してないExceptionに対しても、アプリケーションでは何かの処理をすべきですよ。
補足
回答ありがとうございます。 出力したいのはサーブレットで発生したExceptionです。 環境はtomcatで動かしています。 stdout.logにはExceptionが出力されていて、log4jプロパティファイルにstdoutの設定がConsoleAppenderになっています。(stdout.logはlog4jの設定は関係ないのでしょうか・・・) 余計なお世話なんてとんでもない。 そうですね。想定していないExceptionも処理すべきだと思うのですが・・・ 次回からはそうします! 補足がわかりにくいようでしたら、また指摘お願いします!
お礼
出力形式は設定したスタイルになっていました。 どうしてもわかりませんでしたので、 atコマンドでリネームするようにしました。 お礼が遅れてすみませんでした。 ありがとうございました。