Log4j 2.16 中的 PropertyConfigurator.configure() (log4j 1.2.4) 替换

Posted

技术标签:

【中文标题】Log4j 2.16 中的 PropertyConfigurator.configure() (log4j 1.2.4) 替换【英文标题】:PropertyConfigurator.configure() (log4j 1.2.4) replacement in log4j 2.16 【发布时间】:2022-01-20 06:48:02 【问题描述】:

我们在具有 log4j 1.x 版本的 java 项目中使用属性配置。客户要求从 1.x 版本升级到 2.16。我将 jar 文件从 log4j 1.2.4 替换为 log4j 2.16。我得到的唯一错误是

导入 org.apache.log4j.PropertyConfigurator;

在主函数中,我使用了 PropertyConfigurator.configure(property.getProperty("LOG_PATH"));

PropertyConfigurator 是 log4j 1.2.4 jar 中可用的类。 因为我用 log4j 2.16 jar 替换了它,所以这个 PropertyConfigurator 类不可用。 我的问题是:1)我应该怎么做才能摆脱这个错误。 2) log4j 2.16 中替代 PropertyConfigurator 类的替代类是什么。

我们完全只使用属性文件。不是 xml。请帮帮我。

【问题讨论】:

【参考方案1】:

请参考以下 Log4J2 文档 https://logging.apache.org/log4j/2.0/faq.html#reconfig_from_code

注意:确保将 log4j.xml/properties 文件重命名为 log4j2.xml/properties

例子:

import org.apache.logging.log4j.core.LoggerContext;

public void configureLog4j() throws IOException

  String path = getLog4jConfigFilePath();
  File file = new File(path);
  if (file.exists())
  
    LoggerContext context  = (LoggerContext)LogManager.getContext(false);
        context.setConfigLocation(file.toURI());
  else
  
    throw new FileNotFoundException(path);
  

【讨论】:

以上是关于Log4j 2.16 中的 PropertyConfigurator.configure() (log4j 1.2.4) 替换的主要内容,如果未能解决你的问题,请参考以下文章

修不完的bug:Log4j第三次发布漏洞补丁,开源社区已修复1/7受影响Java包

学习日记(2.15---2.16)

log4j2 核弹大锅,顺便学习SLF4J与log4j2

spring quartz 配置出错 按照网上写的先导入Quartz-2.16解压后根目录中quartz-all-2.1.6.jar和lib目录中的

iOS 应用提交二进制被拒绝 (2.16) + UIBackgroundModes

2.16 umask