我有以下log4j2.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<RollingFile name="testLog" fileName="test.log" filePattern="" append="false">
<PatternLayout pattern="[%t] %-5level - %msg%n%n"/>
<SizeBasedTriggeringPolicy size="5mb" />
</RollingFile>
</appenders>
<loggers>
<logger name="TestsLogger" level="trace" additivity="false">
<appender-ref ref="testLog"/>
</logger>
<root level="debug">
<appender-ref ref="testLog"/>
</root>
</loggers>
</configuration>
如何修改此配置
如何限制在1中创建的部分日志文件的数量?我想要实现的是如下方案:
creating test1.log [present log files: test1.log]
test1.log - 5mb limit reached
creating test2.log [present log files: test1.log, test2.log]
test2.log - 5mb limit reached
creating test3.log [present log files: test2.log, test3.log]
test3.log - 5mb limit reached
creating test4.log [present log files: test3.log, test4.log]
and so on
有谁知道,如何实现这样的目标?当然,如果单独使用log4j2就可以实现这样的功能,那将会很不错。但也许有一种方法可以将log4j2与某些外部程序结合起来,这些外部程序将与主Java应用程序一起运行并删除多余的日志文件,同时保持最后两个日志文件的完整性。因此,如果任何人至少有一个1.的建议,它可能已经,我正在寻找。因为我可以为第二部分编写程序。如果第二部分也可以用log4j2完成,那当然会很棒。
答案 0 :(得分:26)
到目前为止我从未使用过log4j2,但是RollingFileAppender的文档为您提供了很多配置示例。
有趣的是你的接缝是这样的(使用DefaultRolloverStrategy
):
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>