【发布时间】:2021-07-05 03:54:44
【问题描述】:
我有以下 log4j2.xml 配置。我有一个基于时间和大小的触发策略。由于首先违反了大小限制 (10 MB),因此日志文件会翻转,并且在创建新文件时,它会在文件名中附加错误的日期。我想要的是:
- 当文件大小达到 10 MB 时翻转(所有文件的总大小不应超过 1500 乘以 10 MB)
- 每 15 天滚动一次
文件名应为 abc.log、abc__2021-04-09__1.log、abc__2021-04-09__2.log。基本上它应该附加当前日期。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<RollingFile name="RollingFileAppender" fileName="/var/log/abc/abc.log"
filePattern="/var/log/abc/abc__%d{yyyy-MM-dd}__%i.log" immediateFlush="false" append="true">
<JsonLayout complete="true" compact="true" eventEol="true">
<KeyValuePair key="timestamp" value="$${date:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"/>
</JsonLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="15"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="1500"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info" includeLocation="false">
<AppenderRef ref="RollingFileAppender"/>
</Root>
</Loggers>
</Configuration>
请让我知道我的代码哪里错了。提前致谢。
新编辑
要求 - 以 1) 或 2) 中较早发生的为准:
- 当所有文件的总大小超过 1500 乘以 10 MB ~ 15 GB(文件大小为 10 MB)时
- 自服务开始后每 15 天
如果 1) 发生在 2) 之前,它应该根据记录的速度一个一个地刷新文件的现有内容,并写入带有当前日期附加到文件名的文件(不是服务启动的日期) .
如果 2) 发生早于 1),它应该删除所有现有文件并开始写入文件名附加当前日期(不是服务启动日期)的文件。
请帮助正确配置。
【问题讨论】:
-
文件名后面的日期是什么
-
未来 15 天的日期...我认为它与 interval=15 有关。
-
是,删除间隔,将当前日期附加到文件名
-
但是如何确保每 15 天滚动一次文件?
标签: java xml log4j2 appender rollingfileappender