log4j2不会滚动在没有log4j的情况下编写的应用程序日志



My log4j2.xml不会删除旧日志。我的应用程序将日志写入{sys:LOG_PATH}/onixs/fix/而不写入log4j(sys:LOG_PATH是一个环境变量(。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="onixs"
fileName="${sys:LOG_PATH}/onixs/engine/engine_log.txt"
filePattern="${sys:LOG_PATH}/onixs/archive/engine/engine_log.%d{yyyy-MM-dd-HH-mm-ss}.txt"
append="true"
immediateFlush="false">
<PatternLayout>
<Pattern>%d{HH:mm:ss:SSS}|%-5.5level|%-20.20thread|%-30.30logger{30}|%msg%n
</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy fileIndex="nomax">
<Delete basePath="${sys:LOG_PATH}/onixs/archive/">
<IfFileName glob="engine_log.*.txt"/>
<IfLastModified age="1d"/>
</Delete>
<Delete basePath="${sys:LOG_PATH}/onixs/fix/">
<IfAny>
<IfFileName glob="*.R*.summary"/>
<IfFileName glob="*.state"/>
</IfAny>
<IfLastModified age="1d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<logger name="biz.onixs" level="info" additivity="false">
<AppenderRef ref="onixs"/>
</logger>

<Root level="debug">
<AppenderRef ref="Console"/>
</Root>
</Loggers>

我希望我的log4j每天在${sys:LOG_PATH}/onixs/fix/中滚动日志(IfLastModified age="1d"(。但这并没有发生。你能帮我理解为什么吗?

您的文件模式表示希望日志每秒滚动一次,但您的策略表示只希望在应用程序启动时滚动。ifLastModified年龄=";1d";表示您只想将前一天的文件保留在归档文件夹中。这与翻车发生的频率无关。

如果您希望在应用程序运行时滚动文件,则需要有一个触发策略来执行此操作。SizeBasedTriggeringPolicy、TimeBasedTriggergingPolicy或CronBasedTrigger Policy中的一个就可以了。

我建议您再次查看手册中的配置和RollingFileAppender部分。

相关内容

最新更新