gpt4 book ai didi

java - 使用 slf4j 作为 log4j2 的抽象

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:35 25 4
gpt4 key购买 nike

我正在开发一个JAVA项目,其中代码中的所有日志记录都是使用slf4j完成的。例如

package my.project.package;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class MyClass {

private Logger logger = LoggerFactory.getLogger(MyClass.class);

//some attributes, their getters and setters


public void initialize() {
//some code

logger.info("Data received successfully!");

//some code

}
}

现在,我们还有一个 log4j2.xml 文件。当 servlet 上下文初始化时加载此文件

Configurator.initialize(null, FileFinderUtil.findFile("log4j2.xml", projectName, fallback).getAbsolutePath()); 

其中配置器是 log4j2 库中的一个类。我们还在服务器(tomcat)上部署这个log4j2.xml文件

1) 我已阅读this关于 slf4j 和 log4j2 协同工作的链接。如果 slf4j2 是一个抽象(我将其理解为抽象类),那么如何初始化此类的对象?在java中,抽象类不能有对象

2) 对于两者一起工作,是否是 slf4j 对象正在写入日志,但实际上是在幕后使用 log4j2 库来实现的?有人可以用简单的术语解释这个过程吗?

最佳答案

1) slf4j2 不是一个抽象类,它只是 log4j2 的抽象。

2) log4j2 是 slf4j 的一种包装器。 java应用程序使用slf4j进行日志记录,但tomcat使用log4j2在服务器上进行日志记录。

所以log4j2的问题是,当一个tomcat实例上部署了很多应用程序并且它们都有自己的log4j2实例时,这会导致tomcat崩溃。针对这种情况,我们可以在服务器上使用多个版本的slf4j2,而它们又都只使用tomcat上的一个实例。

关于java - 使用 slf4j 作为 log4j2 的抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48790413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com