我将log4j-api-2.0.0.jar
和log4j-core-2.0.2.jar
导入到构建路径中。但不知何故,下面的代码失败了:
import org.apache.logging.log4j.core.Logger;
public class TheClass {
private static Logger log = Logger.getLogger(TheClass.class);
...
错误消息显示:The method getLogger(Class<TheClass>) is undefined for the type Logger
我只是很好奇,getLogger()
在Logger中不再是一个有效的方法了吗?
8条答案
按热度按时间vlf7wbxs1#
您会注意到
Logger
不再声明这样的方法。log4j版本2做了一些重大的改变。Here's更改日志。
getLogger
seems to have been moved to aLogManager
class.Here's他们建议如何进行迁移。
gz5pxeao2#
我举个例子是为了更好地理解。
myzjeezk3#
对于新的Log4J 2,您必须至少添加(在我的情况下)log4j-core-2.8.2,log4j-api-2.8.2,在其他情况下,您可能还需要添加log4j-web-2.8.2。因此,当您想要获取日志记录时,可以导入
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;
最后的用法是
static final Logger LOGGER = LogManager.getLogger(WebService.class.getName());
注意:不要忘记把配置文件放到项目的根目录下,否则你将无法获得你的日志。
希望这将有助于有人亲切问候
9rygscc14#
如果你使用的是log4j版本2。
6gpjuf905#
是的,你的观察是正确的。它不支持getLogger()方法。
查看此文档链接:http://logging.apache.org/log4j/2.x/log4j-core/apidocs/index.html
示例教程:http://www.javabeat.net/log4j-2-example/
smdncfj36#
正如在其他答案中提到的,
Logger
现在是一个接口,您可以从LogManager
获取Logger示例。API现在从实现中分离出来,给给予团队在不破坏用户代码的情况下更改实现的自由。API很少会改变,如果它改变了,它将是2.x版本,而不是2.0.x版本。也就是说,总是使用匹配的log4j-api和log4j-core版本可能是一个好主意。
pieyvz9o7#
要在类上使用getLogger()方法,请导入Logger类
import java.util.logging.Logger;
并按如下方式使用它
记住,这个方法有一个字符串参数。
或者使用org.apache.log4j包中的Logger,如下所示
s6fujrry8#
这对我很有效: