gpt4 book ai didi

java - log4j2 - 如何动态更改文件?

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:53 25 4
gpt4 key购买 nike

我已经使用 log4j 2 实现了异步日志记录,但现在我需要每小时更改一次日志文件名,例如 2015-11-19/log-12.00.log、2015-11-19/log-13.00 等(我发现的解决方案没有用,可能是我做错了什么)。

我有以下 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- Don't forget to set system property
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
to make all loggers asynchronous. -->

<Configuration status="WARN">
<Appenders>
<!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. -->
<RandomAccessFile name="RandomAccessFile" fileName="async.log" immediateFlush="false" append="true">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
</RandomAccessFile>
</Appenders>
<Loggers>
<Root level="info" includeLocation="false">
<AppenderRef ref="RandomAccessFile"/>
</Root>
</Loggers>
</Configuration>

如何实现?

最佳答案

您应该看看 TimeBasedTriggeringPolicy。基本上,一旦日期/时间模式不再适用于 Activity 文件,它就会导致翻转。没试过这个,但这应该适合你。

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN" >
<appenders>
<Async name="Async">
<AppenderRef ref="logfile" />
</Async>

<RollingRandomAccessFile name="logfile" fileName="async.log" filePattern="log-%d{HH}.00.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
</Policies>
<DefaultRolloverStrategy max="24"/>
</RollingRandomAccessFile>
</appenders>
<loggers>
<root level="INFO" includeLocation="false">
<AppenderRef ref="Async"/>
</root>
</loggers>
</configuration>

TimeBasedTriggeringPolicy 间隔属性根据日期模式中最具体的时间单位控制翻转发生的频率。在您的情况下,是文件模式中的 %d{HH} 是几个小时。

关于java - log4j2 - 如何动态更改文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com