【问题标题】:log4j-slf4j-impl / log4j v2 - setting custom log4j.xml destinationlog4j-slf4j-impl / log4j v2 - 设置自定义 log4j.xml 目标
【发布时间】:2021-12-14 17:05:32
【问题描述】:

在我的应用程序运行时,我想动态指定 log4j 配置文件的位置。

这样一来,它不是捆绑在 JAR 中的资源,而是磁盘上的实际文件,如果增加日志记录级别出现问题,可以对其进行编辑。

使用 log4j v1.2 时,您可以使用 DOMConfigurator.configure(URL) 来执行此操作。

但是现在我已经升级到log4j-slf4j-impl / log4j v2,这个方法已经不存在了。

我可以看到如何直接配置log4j,但我想使用现有的slf4j兼容XML文件而无需更改它。

谁能帮忙?

【问题讨论】:

    标签: java log4j slf4j


    【解决方案1】:

    Log4j 2.x 使用ConfigurationFactory 来解析配置文件。每种格式都有一个工厂和一个默认工厂。默认工厂尝试从文件的文件扩展名中猜测正确的格式:不幸的是,旧的 Log4j 1.2 和新的 Log4j 2.x 格式都有.xml 扩展名,因此需要额外的配置。

    为了解析 Log4j 1.2 XML 格式,您需要添加 log4j-1.2.api 工件并替换默认工厂:

    import org.apache.log4j.xml.XmlConfigurationFactory;
    import org.apache.logging.log4j.core.config.ConfigurationFactory;
    
    ConfigurationFactory.setConfigurationFactory(new XmlConfigurationFactory());
    

    这之后设置一个简单的:

    Configurator.reconfigure(new URI("URI of your file"));
    

    会将您的配置应用到相应的LoggerContext

    【讨论】:

      猜你喜欢
      • 2016-04-23
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2020-07-13
      • 2011-11-20
      • 1970-01-01
      相关资源
      最近更新 更多