gpt4 book ai didi

java - 从 log4j 1.2 迁移到 log4j 2 - 如何获取所有附加程序的列表和滚动文件策略

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:02 25 4
gpt4 key购买 nike

我正在将我的应用程序从 log4j 1.2 迁移到 log4j 2.0

我有现成的代码:

Enumeration appenders = logger.getAllAppenders();
.
.
.
fileBackupIndex = rollingFileAppender.getMaxBackupIndex();

在 log4j 2.0 中,我找不到替换上面 java 代码的方法。如何获取所有附加程序的列表以及如何以编程方式获取为 RollingFile 附加程序定义的最大值?

最佳答案

对于 log4j2,API 和 CORE 是分离的。这允许团队在不破坏客户端代码的情况下对实现进行更改。

因此,如果您的代码依赖于实现细节,请注意,将来这可能会发生变化,您的代码可能会崩溃。

也就是说,您可以获得这样的附加程序映射:

Logger logger = LogManager.getLogger();
Map<String, Appender> appenderMap =
((org.apache.logging.log4j.core.Logger) logger).getAppenders();

您可以遍历 map ,直到找到 RollingFileAppender。从这一点开始,它变得非常丑陋......您想要的信息都在私有(private)字段中,因此您需要使用反射来执行以下操作:

  • 获取 fileAppender 的“manager”字段并将其转换为 RollingFileManager
  • 获取经理的“策略”字段并将其转换为 DefaultRolloverStrategy
  • 获取 defaultRolloverStrategy 的“maxIndex”字段

这显然非常脆弱...如果您真的需要它,您可以在 log4j-dev 邮件列表上请求此功能或创建 JIRA 票证。获得此功能的最快方法是提供包含功能请求的补丁。

关于java - 从 log4j 1.2 迁移到 log4j 2 - 如何获取所有附加程序的列表和滚动文件策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com