我有一个使用 JDK 日志记录和 logging.properties 文件的应用程序,该文件通过 java.util.logging.FileHandler.count 配置了一些旧的日志文件。
在应用程序的某些点,我想触发日志文件的手动翻转以启动新的日志文件,例如在预定的 Activity 开始之前。
JDK Logging 可以做到这一点吗?
在 Log4j 中,我使用以下内容,但是在这种情况下,我想使用 JDK 日志记录!
Logger logger = Logger.getRootLogger();
Enumeration<Object> appenders = logger.getAllAppenders();
while(appenders.hasMoreElements()) {
Object obj = appenders.nextElement();
if(obj instanceof RollingFileAppender) {
((RollingFileAppender)obj).rollOver();
}
}
最佳答案
您可以通过创建一个零限制且没有追加的一次性 FileHandler 来触发轮换。
new FileHandler(pattern, 0, count, false).close();
- 删除并关闭现有的 FileHandler
- 创建并关闭旋转 FileHandler。
- 使用您的默认设置创建和添加您的 FileHandler。
否则你可以求助于反射:
Method m = FileHandler.class.getDeclaredMethod("rotate");
m.setAccessible(true);
if (!Level.OFF.equals(f.getLevel())) { //Assume not closed.
m.invoke(f);
}
关于java - 如何使用 JDK Logging 手动滚动日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158507/