当前位置: 首页 > 知识库问答 >
问题:

LogManager的替代方案。log4j 2.16.0中log4j 1.2.17中的setRepositorySelector()

缪风史
2023-03-14

我正在将一个应用程序从log4j 1.2.17转换为2.16.0,在log4j2中,LogManager中似乎不再有setRepositorySelector()方法。我不能按原样使用Log1.x桥,因为该项目不符合迁移文档中列出的要求。

下面的功能是否有log4j2变通方法?我没有写原始代码,我只是在更新它。

        //The "guard" is a simple object that protects against re-setting of the
        //LoggerFactory by anyone but the one who set it first with a particular
        //"guard".  Basically, this would allow a container to set the LoggerFactory,
        //but disallow applications running in the container from changing it.  If
        //the container holds a handle on the "guard" object, then it alone can
        //change the LoggerFactory.  If no one holds a handle on the "guard" object,
        //then no one can change the LoggerFactory once it is set the first time.       
        Object guard = new Object();
        try {
            LogManager.setRepositorySelector(new ContextJNDISelector(), guard);
        }catch(Exception e){
            System.out.println("Exception, " + CLASS_NAME + ".contextInitialized(): " + e.getMessage());
            //e.printStackTrace();
        }

共有1个答案

景哲
2023-03-14

由于Log4j 2.x API可以有多个实现,因此存储选择器(RepositorySelector)被重命名为上下文选择器(ContextSelector),并移动到Log4jContextFactory。因此,您需要使用:

LogManager.setFactory(new Log4jContextFactory(new JndiContextSelector()));

备注:在任何(直接或间接)调用LogManager之前,必须调用上述代码。getLogger或类似方法。

 类似资料:
  • 这可以用来强制假设所收集的元素是不同的 但是,在我看来,java doc已经过时了。不能用了。问题是JDK是否为java开发人员提供了对类似功能的访问(类似的方法、常量等),还是应该由开发人员自己编写?

  • 在这里学习我在Raku(neéPerl 6)的方法,非常好。但是我非常想念这个神奇的

  • 我需要在控制台上打印大量的数据(大约100兆)。在IntelliJ上使用println是很失败的。有没有像console.log这样的替代方案,可以处理和显示这些数据而不会出现滞后和减慢? 提前道谢!

  • 问题内容: 在Linux中开发内核模块时,不允许使用C标准库。 但是,如果我需要使用某些常用功能,例如,我应该去哪里? 问题答案: 无论Linux内核中没有实现什么,您都必须实现自己或从另一个开源内核模块中借鉴。但是,您会发现它是在内核中实现的。 请参阅内核API文档。特别是关于您的一般问题的“ 基本C库函数”部分,以及有关的特定问题的“ 字符串处理”部分。 您将要包含。 我不知道为什么内核API

  • 本文向大家介绍基于Python中random.sample()的替代方案,包括了基于Python中random.sample()的替代方案的使用技巧和注意事项,需要的朋友参考一下 python中random.sample()方法可以随机地从指定列表中提取出N个不同的元素,但在实践中发现,当N的值比较大的时候,该方法执行速度很慢,如: numpy random模块中的choice方法可以有效提升随机

  • 这是为什么BigQuery在小数据集上表现不好的问题的后续问题。 假设我有一个大约1百万行的数据集。在我们当前使用的数据库(mysql)中,聚合查询的运行速度非常慢,可能需要大约10秒的时间进行复杂的聚合。在BigQuery上,所需的初始化时间可能会使此查询花费约3秒,比mysql要好,但如果我们需要在1s或更短时间内返回查询,则此工具不适合此作业。 那么,我的问题是,在对中等大小的数据集(如10