我正在将我的应用程序从log4j 1.2迁移到log4j 2.0
我有现有代码:
Enumeration appenders = logger.getAllAppenders();
.
.
.
fileBackupIndex = rollingFileAppender.getMaxBackupIndex();
在log4j 2.0中,我找不到替换上方Java代码的方法。如何获取所有附录的列表以及如何以编程为RollingFile Appender定义的最大值?
使用log4j2,API和Core之间存在分离。这使团队可以在不违反客户端代码的情况下对实施进行更改。
因此,如果您的代码取决于实施详细信息,请注意,将来可能会更改并且您的代码可能会破裂。
也就
Logger logger = LogManager.getLogger();
Map<String, Appender> appenderMap =
((org.apache.logging.log4j.core.Logger) logger).getAppenders();
您可以在地图上循环,直到找到RollingFileAppender为止。从这一点开始,它真的很丑陋...您想要的信息全部都在私人领域,因此您需要使用反射来执行以下操作:
- 获取FileAppender的"经理"字段并将其施放给RollingFileManager
- 获取经理的"策略"字段,并将其投入到DefaultrolloverStrategy
- 获取DefaultrolloverStrategy的" Maxindex"字段
这显然很脆弱...如果您真的需要此功能,则可以在Log4J-Dev邮件列表上请求此功能或创建JIRA票。获得此功能的最快方法是,如果您提供了带有功能请求的补丁。
我已经为
添加了访问者- MinIndex,Maxindex和CompressionLevel。
- TriggerPolicy和RolloverStrategy。
请参阅我们的SVN TRUNK。