使用log4j-2.6绑定从log4j-1.2迁移到slf4j

时间:2016-10-12 17:32:06

标签: java logging log4j slf4j

我正在尝试使用log4j绑定将现有项目从直接log4j迁移到slf4j。 此外,我正在将log4j的版本从1.2升级到2.6

一些常见的代码更改是: -

1

import org.apache.log4j.Logger;
.
.
.
private final static Logger log = Logger.getLogger(SearchXYZ.class);

变为

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.
.
. 
private final static Logger log = LoggerFactory.getLogger(SearchXYZ.class);

2

import org.apache.log4j.Logger;
.
.
.
private static final Logger logger = Logger.getLogger(XYZ.class);
.
.
.
logger.fatal("FAILURE", throwableObject);

变为

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
.
.
.
private static final Logger logger = LoggerFactory.getLogger(XYZ.class);
private static Marker fatal = MarkerFactory.getMarker("FATAL");
.
.
.
logger.error(fatal, "FAILURE", throwableObject);
  1. 删除了Appenders。
  2. 等等。

    我遇到的一个地方是Configurator文件。

    AppConfigLog4jConfigurator.configureForBootstrap();
    

    它给编译时错误说: -

      

    未找到org.apache.log4j.spi.Configurator的类文件

    这个功能有什么作用?什么是可能的替代品?

1 个答案:

答案 0 :(得分:0)

首先,我不确定为什么要切换到SLF4J API,因为Log4j 2 API支持SLF4J所做的一切以及更多。在我自己的代码中,我发现切换只需要将导入和LoggerFactory更改为LogManager。

Configurator是Log4j 1中的一个类,用于配置Log4j。它类似于Log4j 2中的Configurator类。您可能想调用其中一个初始化方法。