小さなJavaEEアプリケーションにログインするためにjavautilloggingを使用しています。追加のFileHandlerを追加するために(たとえば、エラー/警告のために)、実際のロガーを作成し、ファイルハンドラーを「メイン」ロガーに静的に追加するLoggerFactoryを作成しました。
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
問題は、どうすればこれを回避できるかということです。最後にファイルハンドラーを閉じる必要がありますか?しかしここで?これはJavaEEアプリケーションなので、出口点ではありませんか?また、.. log.0だけでなく、ログファイルに対して..log.0.Xを取得するのはなぜですか?
ありがとう、インゴ