LoggerDynamicMBean log4j 1.x 到 log42

问题描述 投票:0回答:1

所以我试图将我们的遗留应用程序 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

java log4j log4j2 jmx mbeanexporter
1个回答
0
投票

您问题中的代码只是通过 JMX 导出一些记录器数据作为监视工具。执行迁移是重新评估此类代码实用性的最佳时机。

如果您不使用 JMX 监控工具,只需删除代码即可。

如果你确实使用JMX监控工具,那么代码也是无用的,因为Log4j 2.x默认通过JMX导出数据(参见

LoggerConfigAdminMBean
)。但是,您需要针对不同的数据集调整监控工具。

© www.soinside.com 2019 - 2024. All rights reserved.