我正在将 %d{UNIX} 与 apache log4j 一起使用,但它不起作用 gradle 文件:
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.24.1'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.24.1'
log4j2.xml
<RollingFile name="ROLLING" fileName="logs/app.log" filePattern="logs/app.**%d{UNIX}**.log.gz" ignoreExceptions="false">
<PatternLayout>
<Pattern>%m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="5" modulate="true"/>
<SizeBasedTriggeringPolicy size="20 KB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
错误:
ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
TimeBasedTriggeringPolicy
根据 %d{...}
模式确定翻转间隔(请参阅文档)。例如,如果您的模式是 %d{dd-HH-mm}
,那么翻转间隔将为分钟。
但是,
不支持 Log4j 特定的
UNIX
说明符。如果支持的话,它可能会使用以秒为单位的滚动间隔。您是否尝试每 5 秒轮换一次文件?