Java log4j2滚动文件追加器中的文件名问题
我有以下log4j2.xml配置。我有一个基于时间和大小的触发策略。由于首先违反了大小限制(10 MB),日志文件会滚动,并且在创建新文件时,会在文件名后附加错误的日期。我想要的是:Java log4j2滚动文件追加器中的文件名问题,java,xml,log4j2,appender,rollingfileappender,Java,Xml,Log4j2,Appender,Rollingfileappender,我有以下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" e
- 当文件大小达到10 MB时滚动(所有文件的总大小不应超过1500乘以10 MB)
- 每15天翻滚一次
<?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>
请让我知道我的代码哪里错了。提前感谢。您可以使用cron每15天进行一次滚动
<CronTriggeringPolicy schedule="30 15 */15 * * "/>
RollingFileAppender使用文件模式中的日期模式来确定滚动的频率。由于粒度为1天,这通常表示它应该每天滚动。然后您添加了interval=15,因此已指示它每15天进行一次滚动。滚动文件的日期始终为上次基于时间的滚动日期。当添加基于大小的触发策略时,表示在该时间窗口内可能会有进一步的滚动。您应该将文件视为一个基于时间的滚动,它会被基于大小的滚动周期性地中断,因此所有这些操作都是增加索引上的计数器 max参数表示您希望在15天的窗口内允许1500个文件,而不是限制总共1500个文件 如果希望文件名中的日期每天更改,则需要使用1的间隔
如果要将总文件数限制在1500个,则需要在滚动策略中添加删除操作。在未来15天的FileName日期后附加什么日期…我认为这与interval=15有关。是的,删除interval,将当前日期附加到文件名,但如何确保每15天滚动一次文件?您能解释一下吗?这样,我就不需要基于时间的触发策略了?此外,CronTriggeringPolicy是否可以与SizeBasedTriggeringPolicy共存?使用此cron触发器,您不需要基于时间的触发器。它可以与基于大小的触发器策略共存。“schedule=”30 15*/15**“/”的作用是什么?唯一的区别是TimeBsaedTriggeringPolicy检查是否在记录事件时进行滚动。当时间到期时,它滚动。CronTriggeringPolicy使用Log4j的内置调度程序在指定的时间发生翻滚事件,而不管是否记录了任何事件。简而言之,切换策略不会解决您面临的问题。当您通常在系统运行缓慢且不需要mcuh日志记录来触发翻滚时,使用CronTriggeringPolicy可以更好地进行翻滚。搜索Cron表达式以了解语法。