私は小さなJava EEアプリケーションのログインにjava util loggingを使用しています。 FileHandler(エラー/警告など)を追加するために、私は実際のロガーを作成するLoggerFactoryを作成し、ファイルハンドラーを静的に「メイン」ロガーに追加します。JULのFileHandlerを閉じる必要がありますか?
package de.il.myapp.logging;
public class LoggerFactory {
private static final java.util.logging.Logger MAIN_LOGGER = java.util.logging.Logger.getLogger("de.il.myapp");
static {
try {
final java.util.logging.FileHandler fh = new java.util.logging.FileHandler("error.log", 1024*1024, 5, true);
fh.setLevel(Level.WARNING);
final java.util.logging.Formatter formatterTxt = new java.util.logging.SimpleFormatter();
fh.setFormatter(formatterTxt);
MAIN_LOGGER.addHandler(fh);
} catch (final IOException e) {
//...
}
}
}
public static final Logger getLogger(final Class<?> clazz){
return java.util.logging.Logger.getLogger(clazz);
}
}
アプリケーションを停止すると、lckファイルはまだ残りますが、すべて正常に動作します。最初は新しいlckが作成されます。だからいくつかの再起動後、ディレクトリはこのようになります。
error.log.0
error.log.0.1
error.log.0.1.lck
error.log.0.2
error.log.0.2.lck
error.log.0.3
error.log.0.3.lck
error.log.0.lck
質問:どうすればこの問題を回避できますか?最後にファイルハンドラを閉じる必要がありますか?しかしここで?これはJava EEアプリケーションなので、私はあなたの出口ポイントではありませんか?そして、なぜ..log.0.Xだけでなく、ログファイルも..log.0.Xになるのですか?
おかげで、あなたはEJBの中でjava.io
クラスを使用することが許可されていないすべての インゴ
私はWebsphere Application Server 7(コミュニティ版ではありません)を使用しています。このアプリケーションサーバーの名前も知っていますか? /私はServletContextListener経由でそれを処理できますか? – Ingo
これはWebアプリケーションかJEEアプリケーションですか?言い換えれば、サーブレット、JSPなどの内部でのみロガーを使用しているのですか、EJB内でも使用していますか? EJBを使用していない場合は、 'ServletContextListener'を使用できます。それ以外の場合は動作しません。 – Behrang
現在、私はMDBのみを持ち、サーブレットはありません。言い換えればJEEアプリケーションです。私はEJBでLoggerを使用しています。 – Ingo