我正在使用 java util logging 来登录小型 Java EE 应用程序。为了添加一个额外的 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
问题是:我怎样才能避免这种情况?我必须在最后关闭文件处理程序吗?但是哪里?由于这是一个 Java EE 应用程序,我不认为你是一个出口点,对吗?为什么我会为日志文件获得 ..log.0.X,而不仅仅是 ..log.0?
谢谢,英戈