我使用的是log4j 1.2和共用日志。现在我正在尝试将它升级到log4j2。但是如何将log4j2与公用日志一起使用来初始化log4j2。
我试图以下面的方式初始化commons。它的工作精细
**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class));
**Statement2**:log.debug("debug statement");这里我使用的是org.apache.commons.logging.Log类型的对象,它是用org.apache.log4j.Logger的对象初始化的。(org.apache.log4j.Logger是log4j 1.2中的类,从log4j2改为org.apache.logging.log4j.Logger)。
现在,在升级到log4j2之后,Statement1将无法工作,因为Log4JLogger()构造函数需要org.apache.log4j.Logger类型的参数。
那么,如何在Log4j2中使用呢?
发布于 2017-01-04 23:49:31
您需要将log4j-jcl-2.7依赖项添加到类路径中。
看"常见问题中的哪一个罐子问题“。
在您的代码中,使用
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class MyClass {
private Log log = LogFactory.getLog(MyClass.class);
...您不应该显式地使用Log4JLogger。
另外,请注意,Log4j2与Log4j 1不同,因为它提供了它的API与其实现之间的清晰分离。因此,与10年前使用Log4j 1相比,现在使用包装器库的好处要少得多。
考虑直接使用Log4j2 API :它使您在API和实现之间实现了相同的分离,并且比公用日志记录或slf4j更富特性。
请注意,直接使用Log4j2 API的风险很小:如果您改变主意,决定在直接使用Log4j2 API的应用程序中使用Logback (或其他slf4j实现),那么log4j-to-slf4j-2.x模块总是存在的。
https://stackoverflow.com/questions/41462181
复制相似问题