我正在修改现有的 log4j2.properties 文件以将错误记录到单独的文件中。我的问题是如何为多个 fileappenders REUSE SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy 和 DefaultRolloverStrategy。我不想多次复制相同的东西
appender.errorfile.policies.type=Policies
appender.errorfile.policies.size.type = SizeBasedTriggeringPolicy
appender.errorfile.policies.size.size = 51200KB
appender.errorfile.policies.time.type = TimeBasedTriggeringPolicy
appender.errorfile.policies.time.interval = 1
appender.errorfile.policies.time.modulate = true
appender.errorfile.strategy.type = DefaultRolloverStrategy
appender.errorfile.strategy.delete.type = Delete
appender.errorfile.strategy.delete.basePath = /logs
appender.errorfile.strategy.delete.maxDepth = 10
appender.errorfile.strategy.delete.ifLastModified.type = IfLastModified
appender.errorfile.strategy.delete.ifLastModified.age=30d
appender.errorfile.filter.threshold.type = ThresholdFilter
appender.errorfile.filter.threshold.level = ERROR
appender.errorfile.filter.threshold.onMatch = ACCEPT
appender.errorfile.filter.threshold.onMismatch = DENY
appender.errorfile.type=RollingFile
appender.errorfile.name=File-ERROR
appender.errorfile.fileName=/logs/error.log
appender.errorfile.filePattern=/logs/error_%d{yyyyMMdd}.log.gz
appender.errorfile.layout.type=PatternLayout
appender.errorfile.layout.pattern=%d %-5p [%C] (%tn) %m (%F:%L)%n
无法重用属性文件的部分内容或将多个属性文件组合成一个。
唯一允许的配置格式是 XML,通过内置的 XInclude 功能实现。因此,您可以创建一个模板文件
rolling-file.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<RollingFile>
<Policies>
<SizeBasedTriggeringPolicy size="51200 KB"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="logs" maxDepth="10">
<IfLastModified age="30d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
并将其部分内容包含在
log4j2.xml
文件中:
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude">
<Appenders>
<RollingFile name="File-ERROR"
fileName="logs/error.log"
filePattern="logs/error_%d{yyyyMMdd}.log.gz">
<PatternLayout pattern="%d %-5p [%C] (%tn) %m (%F:%L)%n"/>
<xi:include href="rolling-file-template.xml" xpointer="element(/1/1)"/>
<xi:include href="rolling-file-template.xml" xpointer="element(/1/2)"/>
</RollingFile>
</Appenders>
...
</Configuration>