java - 每分钟Log4j RollingFileAppender

原文 标签 java logging configuration log4j rollingfileappender

我正在使用Log4j 2.6.2测试Log4j RollingFileAppender。

我想每分钟轮换一次日志,因此我有一个log4j2.xml,非常类似于此处https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender的一个示例。
这是我的log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="testlog4j2" packages="">
  <Properties>
    <Property name="baseDir">C:/tmp/testlog4</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${baseDir}/app.log"
          filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH-mm}.log.gz">
      <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
      <CronTriggeringPolicy schedule="0 0/1 * * * ?"/>
      <DefaultRolloverStrategy>
        <Delete basePath="${baseDir}" maxDepth="2">
          <IfFileName glob="*/app-*.log.gz" />
          <IfLastModified age="60d" />
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="ALL">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>


这是一个我每秒都要编写日志的应用程序。

package testlog4j2;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class TestLog4j {

    private final static Logger logger = LogManager.getLogger(TestLog4j.class);

    public static void main(String[] args) {
        try {
            for (int i=1; i<=240; i++) {
                logger.info("Hello");
                Thread.sleep(1*1000);
            }
        } catch (Exception e) {
            //e.printStackTrace();
            logger.error("Excepcion general", e);
        }
    }
}


发生的是:


一旦系统在第一分钟旋转日志,就会连续出现这样的错误

2016-07-28 15:10:02,015 Log4j2-Log4j2Scheduled-1错误无法将文件C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28-15-10.log.gz移至C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28-15-10.log.gz:java.nio.file.NoSuchFileException C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28- 15-10.log.gz-> C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28-15-10.log.gz
每分钟都没有GZ
结果gz没有包含60行的日志。相反,它们具有1、2或3行日志。
主日志C:\ tmp \ testlog4 \ app.log没有内容


我做错了什么?

谢谢

最佳答案

您可能发现了一个错误。请在Jira issue tracker上提出错误报告,并提供您在此处描述的所有详细信息。

关于java - 每分钟Log4j RollingFileAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638105/

相关文章:

java - java接口(interface)中的泛型

java - Log4j2/Slf4j 和 Java 11

tomcat - Log4J Tomcat Web应用程序属性文件位置

java - sbt 正在使用 "default"项目而不是创建一个新项目

ruby-on-rails - Webpacker需要Node.js> = v6.4,并且您正在使用v5.4.0

java - 如何让我的 Java 应用程序打开控制台/终端窗口?

java - Mockito - 如何在 doAnswer 中监视 Invocation 参数

java - executorService.submit(Runnable) 返回的 future 对象是否包含对可运行对象的任何引用?

logging - Python 3.7 logging.setLoggerClass() 不是

spring - 如何找到带有自定义注释@Foo 的所有 bean?