我正在用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
我做错了什么?
谢谢
你可能发现了一个窃听器。请在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分钟。对以下实现有任何建议吗? 调度程序类 用于发送消息的类