我正在将我的应用程序从log4j 1.2迁移到log4j 2.0
我有现有代码:
Enumeration appenders = logger.getAllAppenders();
.
.
.
fileBackupIndex = rollingFileAppender.getMaxBackupIndex();
在log4j 2.0中我找不到替换上面java代码的方法。如何获取所有appender的列表以及如何以编程方式获取为RollingFile appender定义的最大值?
答案 0 :(得分:7)
使用log4j2,API和CORE之间存在分离。这允许团队在不破坏客户端代码的情况下对实现进行更改。
因此,如果您的代码依赖于实现细节,请注意将来可能会更改并且您的代码可能会中断。
那就是说,你可以得到这样的appender地图:
Logger logger = LogManager.getLogger();
Map<String, Appender> appenderMap =
((org.apache.logging.log4j.core.Logger) logger).getAppenders();
您可以遍历地图,直到找到RollingFileAppender。从这一点来看,它变得非常丑陋......您想要的信息都在私人领域,因此您需要使用反射来执行以下操作:
这显然是非常脆弱的...如果你真的需要这个,你可以在log4j-dev邮件列表上请求这个功能或创建一个JIRA票。获得此功能的最快方法是使用功能请求提供补丁。
答案 1 :(得分:1)
我添加了
的访问者请参阅我们的SVN主干。