将 log4j 1.2.x 迁移到 log4j 2.16.0
Posted
技术标签:
【中文标题】将 log4j 1.2.x 迁移到 log4j 2.16.0【英文标题】:Migrating log4j 1.2.x to log4j 2.16.0 【发布时间】:2022-01-20 02:49:47 【问题描述】:使用 PropertyConfigurator.configure 方法加载所有位于系统特定位置的 log4j 文件。
static
PropertyConfigurator.configure("C:/users/log4j.properties").
从外部位置配置 log4j 属性的替代方法是什么?
在 log4j2 中使用 PropertyConfigurator.configure 的替代方法是什么?
【问题讨论】:
这能回答你的问题吗? How to configure log4j with a properties file 从外部位置加载 log4j.properties。 以上链接特定于 log4j 1.x 版本,我们支持 PropertyConfigurator 类。但是在 log4j 2.x 中不存在这种支持,那么应该采取什么方法来实现相同的目标 【参考方案1】:以下是加载外部 log4j 文件的两种方式。
在访问 Logger 语句之前使用,可能在静态块中
System.setProperty("log4j.configurationFile","file:C:/path/log4j2.properties");
ConfigurationSource source = new ConfigurationSource(new FileInputStream("C:/path/log4j2.properties"), new File(C:/path/log4j2.properties));
Configurator.initialize(null, source);
发布这些方法,希望对其他人有用。
【讨论】:
【参考方案2】:添加新的依赖项后你必须做一些代码更改。
在 pom.xml 中添加如下依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.16.0</version>
</dependency>
用import org.apache.logging.log4j.LogManager;
和import org.apache.logging.log4j.Logger;
替换你的java类文件导入import org.apache.log4j.Logger;
然后将private static final Logger logger = Logger.getLogger(Test.class);
替换为private static final Logger logger = LogManager.getLogger(Test.class);
更多参考:click here
【讨论】:
由于包结构从 log4j1.x 到 log4j2.x 发生了变化,所以我们更改了这些声明,但我的问题与更改包无关 来自 Log4J 2 的文档:logging.apache.org/log4j/2.0/faq.html#reconfig_from_code以上是关于将 log4j 1.2.x 迁移到 log4j 2.16.0的主要内容,如果未能解决你的问题,请参考以下文章
在 log4j 1.2 到 log4j 2 的迁移中,如何处理 DailyRollingFileAppender 类?
log4j 2 迁移桥 log4j-1.2-api.jar 缺少类