Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JDK日志手动滚动日志文件_Java_Logging_Java.util.logging - Fatal编程技术网

Java 如何使用JDK日志手动滚动日志文件

Java 如何使用JDK日志手动滚动日志文件,java,logging,java.util.logging,Java,Logging,Java.util.logging,我有一个应用程序,它使用JDK日志记录和Logging.properties文件,该文件通过java.util.Logging.FileHandler.count配置了许多较旧的日志文件 在应用程序中的某些点,我希望触发日志文件的手动滚动,以启动新的日志文件,例如,在计划活动开始之前 JDK日志记录可以做到这一点吗 在Log4j中,我使用以下内容,但是在本例中,我希望使用JDK日志 Logger logger = Logger.getRootLogger(); Enumeration<Ob

我有一个应用程序,它使用JDK日志记录和Logging.properties文件,该文件通过java.util.Logging.FileHandler.count配置了许多较旧的日志文件

在应用程序中的某些点,我希望触发日志文件的手动滚动,以启动新的日志文件,例如,在计划活动开始之前

JDK日志记录可以做到这一点吗

在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();
    }
}
Logger=Logger.getRootLogger();
枚举appenders=logger.getAllAppenders();
while(appenders.hasMoreElements()){
Object obj=appenders.nextElement();
if(RollingFileAppender的obj实例){
((RollingFileAppender)obj.rollOver();
}
}

您必须编写自己的处理程序才能使轮换生效。类似的东西与JDK日志一起工作,只是替换了logmanger部分。它已经有了一些不同的功能。

您必须编写自己的处理程序,才能使旋转正常工作。类似的东西与JDK日志一起工作,只是替换了logmanger部分。它已经有了一些不同的功能。

您可以通过创建一个零限制且无附加的一次性文件处理程序来触发旋转

newfilehandler(模式,0,计数,false).close()

  • 删除并关闭现有的FileHandler
  • 创建并关闭旋转文件处理程序
  • 使用默认设置创建并添加文件处理程序
  • 否则,您可以使用反射:

            Method m = FileHandler.class.getDeclaredMethod("rotate");
            m.setAccessible(true);
            if (!Level.OFF.equals(f.getLevel())) { //Assume not closed.
                m.invoke(f);
            }
    

    您可以通过创建一个零限制且无附加的一次性文件处理程序来触发旋转

    newfilehandler(模式,0,计数,false).close()

  • 删除并关闭现有的FileHandler
  • 创建并关闭旋转文件处理程序
  • 使用默认设置创建并添加文件处理程序
  • 否则,您可以使用反射:

            Method m = FileHandler.class.getDeclaredMethod("rotate");
            m.setAccessible(true);
            if (!Level.OFF.equals(f.getLevel())) { //Assume not closed.
                m.invoke(f);
            }
    
    }


    }

    我建议使用SLF4J将java.util.logging“桥接”到logback或log4j(最多)。请参阅:。使用logback滚动,zpiping文件等只是配置问题。是的,当然,我也可以完全切换到Log4j,因为它不是一个大的应用程序,但我很感兴趣,如果我可以用JDK日志本身来完成它。另外,我对配置的可能性不感兴趣,而是在代码中的特定点进行滚动。我建议使用SLF4J将java.util.logging“桥接”到logback或log4j,最多。请参阅:。使用logback滚动,zpiping文件等只是配置问题。是的,当然,我也可以完全切换到Log4j,因为它不是一个大的应用程序,但我很感兴趣,如果我可以用JDK日志本身来完成它。另外,我对配置的可能性不感兴趣,而是在代码中的特定点进行滚动。:(,我不想深入日志框架,但似乎没有其他方法…:(,我不想深入日志框架,但似乎没有其他方法。。。