当前位置: 首页 > 知识库问答 >
问题:

Log4j每分钟RollingFileAppender

桓兴腾
2023-03-14

我正在用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.nosuchfile异常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

我做错了什么?

谢谢

共有1个答案

酆翔宇
2023-03-14

你可能发现了一个窃听器。请在Jira问题跟踪器上提出一个bug报告,其中包含您在这里描述的所有细节。

 类似资料:
  • 问题内容: 我想在Java中编写一个会启动并运行的循环,如下所示: 我要这样做,以免占用系统资源。代码中实际发生的事情是,它进入一个网站并检查是否已完成某件事,如果未完成,则应等待一分钟,直到再次检查为止,然后再继续检查。反正他们在Java中执行此操作吗? 问题答案: 使用。 根据系统计时器和调度程序的精度和准确性,使当前正在执行的线程进入休眠状态(暂时停止执行)达指定的毫秒数。该线程不会失去任何

  • 我正在尝试绘制每分钟调用 API 的次数。使用Coda Hale指标和石墨,我可以看到一个连续的计数(即如果API被调用5次,它将在时间上显示一条恒定的线,以获得值5),或者我可以看到每分钟的指数加权移动平均线。但我想看到的只是每分钟调用 API 的次数。我尝试过使用Coda Hale的计数器,计时器和仪表,也尝试过使用石墨渲染函数,但无法获得我想要的东西。 以前有人这样做过吗?如果这是一个基本问

  • 我在Burp Suit Free Edition V1.7.03 的入侵者选项卡中,我能够进行攻击,通常是HTTP请求,但我希望HTTP请求应该每10分钟发出一次,而不是默认的3秒时间间隔(大约)

  • 我们正在查看事件桥,以便每分钟向SQS添加一次预定任务。 我们正在寻找事件桥来实现它。到目前为止,它正确地将消息放入队列中,但我们尝试将其安排为每分钟一次,并注意到队列每五分钟只接收一次消息,有时是六分钟。 这些指标似乎表示调用正在发生;但是,队列没有在指定的时间框架内接收它们。 考虑因素 SQS FIFO队列-重复数据消除 在规定的时间间隔内看不到消息的“duh”是因为AWS文档中的这一点: 用

  • 问题内容: 如何在特定时间段内调用Ajax请求?我应该使用Timer插件还是jQuery为此提供插件? 问题答案: 您可以使用内置的javascript setInterval。 或者如果您是更简洁的类型…

  • 我们有一个Spring Boot应用程序,用于在另一个组件上执行负载测试。我们每分钟最多需要发送35000条JMS消息,因此我使用调度器每分钟运行一次任务。 问题是当我保持低强度时,它会设法在指定的时间间隔(一分钟)内发送消息。但是当强度很高时,发送消息块需要超过1分钟。对以下实现有任何建议吗? 调度程序类 用于发送消息的类