我正在尝试使用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);
等等。
我遇到的一个地方是Configurator文件。
AppConfigLog4jConfigurator.configureForBootstrap();
它给编译时错误说: -
未找到org.apache.log4j.spi.Configurator的类文件
这个功能有什么作用?什么是可能的替代品?
答案 0 :(得分:0)
首先,我不确定为什么要切换到SLF4J API,因为Log4j 2 API支持SLF4J所做的一切以及更多。在我自己的代码中,我发现切换只需要将导入和LoggerFactory更改为LogManager。
Configurator是Log4j 1中的一个类,用于配置Log4j。它类似于Log4j 2中的Configurator类。您可能想调用其中一个初始化方法。