所以我试图将我们的遗留应用程序 java log4j 1.x 迁移到 log4j2
我看到了一篇关于使用桥接 API 迁移此 log4j 的精彩文章。然而,有一件事我一直坚持不下去。
罪魁祸首就是这里
ObjectName addLoggerMBean(MBeanServer server, Logger logger)
{
String name = logger.getName();
ObjectName objectName = null;
try
{
LoggerDynamicMBean loggerMBean = new LoggerDynamicMBean(logger);
objectName = new ObjectName("log4j.category", "logger", name);
if (!server.isRegistered(objectName))
{
server.registerMBean(loggerMBean, objectName);
}
}
catch (Exception e)
{
// log.error("Could not add loggerMBean for ["+name+"].", e);
}
return objectName;
}
所以上面的代码片段是在
LoggerDynamicMBean
库下创建 org.apache.log4j.jmx.LoggerDynamicMBean
的实例,不幸的是,这似乎不是现有 log4j 桥 API 的一部分。
有谁知道如何实现这一目标?抱歉,这个问题很棘手,只是java上的新应用程序,这个应用程序甚至不能在本地运行。所以想一想:D
您问题中的代码只是通过 JMX 导出一些记录器数据作为监视工具。执行迁移是重新评估此类代码实用性的最佳时机。
如果您不使用 JMX 监控工具,只需删除代码即可。
如果你确实使用JMX监控工具,那么代码也是无用的,因为Log4j 2.x默认通过JMX导出数据(参见
LoggerConfigAdminMBean
)。但是,您需要针对不同的数据集调整监控工具。