我正在使用 log4j2 来登录我的应用程序。我在 log4.xml 中使用以下策略
<Policies>
<SizeBasedTriggeringPolicy size="2000 MB" />
<TimeBasedTriggeringPolicy />
</Policies>
并且在服务器关闭时轮换日志。
如何编写集成测试来验证基于上述条件的日志轮换是否有效?
最佳答案
您的测试应该打印大量消息以导致日志滚动。 为了帮助它发生(滚动),请使用专用的 log4j2 配置进行测试。为策略定义不同的值:将大小策略减小到相当小的大小(远小于 2000 MB),并以允许在同一日期创建多个文件的方式更改时间模式和时间策略间隔。 下面的配置示例定义最多创建 21 个日常文件,索引最低的文件是最新的。文件大小达到 1k 时进行滚动:
<RollingFile name="AppLog" fileName="${logDir}/${logFile}.log"
filePattern="${logDir}/${logFile}-%d{dd-MM-yyyy}-%i.log">
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="1 KB"/>
</Policies>
<DefaultRolloverStrategy fileIndex="min" max="21"/>
</RollingFile>
我在 git here 上有一个这样的工作示例。查找测试类 LogApplicationTest。 如果您需要更多提示或遇到其他问题 - 请参阅我的 blog .
关于java - 如何在 log4j2 上编写日志滚动集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37828947/