java - 如何使用 JDK Logging 手动滚动日志文件

标签 java logging java.util.logging

我有一个使用 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();

  1. 删除并关闭现有的 FileHandler
  2. 创建并关闭旋转 FileHandler。
  3. 使用您的默认设置创建和添加您的 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/

相关文章:

java - 使用 gwt-log 框架在 GWT 应用程序中的何处指定自定义日志文件名?

java - 如何调节日志指令随时间产生的打印输出量?

java - Android数据库文件结构是什么

java - 我需要帮助以递归方式比较目录中的文件以查找重复项

java - 如何使用 GWT 处理authorize.net回调

python - 尝试编写 python CSV 提取器

java - 如何使用 spring flux 和 spring flux web 客户端组织线程池?

php - 对于我的 PHP Web 应用程序,数据库日志记录是否比文件日志记录更安全?

通过多个类进行 Java 日志记录

java - 在Java中-我可以设置线程的日志级别吗?