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 Logback TimeBasedRollingPolicy当前文件名无日期_Java_Logging_Logback - Fatal编程技术网

Java Logback TimeBasedRollingPolicy当前文件名无日期

Java Logback TimeBasedRollingPolicy当前文件名无日期,java,logging,logback,Java,Logging,Logback,我正在以编程方式使用TimeBasedRollingPolicy配置Logback RollingFileAppender。它看起来像这样: RollingFileAppender<ILoggingEvent> rollingAppender = new RollingFileAppender<ILoggingEvent>(); TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBas

我正在以编程方式使用TimeBasedRollingPolicy配置Logback RollingFileAppender。它看起来像这样:

    RollingFileAppender<ILoggingEvent> rollingAppender = new RollingFileAppender<ILoggingEvent>();
    TimeBasedRollingPolicy<ILoggingEvent> policy = new TimeBasedRollingPolicy<ILoggingEvent>();
    policy.setContext(rootLogger.getLoggerContext());
    policy.setFileNamePattern(filePath + "/log.%d.txt");
    policy.setMaxHistory(90);
    policy.setParent(rollingAppender);
    policy.start();

    rollingAppender.setContext(context);
    rollingAppender.setRollingPolicy(policy);
    rollingAppender.setTriggeringPolicy(policy);
    rollingAppender.setLayout(layout.getLayout());
    rollingAppender.start();
    rootLogger.addAppender(rollingAppender);

理想情况下,今天的日志应该在log.txt中,而以前滚动的日志应该在log.txt中。事实上,即使是今天的日志也在日志中。%d.txt。如何为当天的日志获取单独的日志文件名?

使用rollingAppender.setFilefoo.txt;。活动文件名是appender的属性,而不是策略。

我最初是这样做的,但添加了该配置行后,它没有遵守滚动策略。日志被放入log.txt,没有生成日志。%d.txt。请检查您的代码。当以XML配置的形式给出时,它可以完美地工作。我再次尝试了它,代码与我最初的问题中的代码完全相同,但我添加了rollingAppender.setfilepath+/log.txt。运行一次以生成log.txt文件,将系统时钟向前拨一天,然后再次运行。新日志刚刚添加到log.txt中。不,不,当然不。您不能通过运行一次、将系统时钟向前设置并再次运行来测试它。你需要让时钟在运行的时候滚动。是的,没问题。它不会在启动时启动,因为它不知道应该启动。它将假定log.txt是当天的日志,即使时钟已经旋转。