我设置了一个基本的Java程序,我正在关注这个tutorial并且有这个确切的代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
我的构建路径上有jar slf4j-api-1.7.5.jar和slf4j-log4j12-1.7.5 jar。我不明白是什么给出了,我可以在F3(源代码查找)的LoggerFactory类中存在getLogger方法。我用Google搜索了这个并且似乎是这个问题的唯一原因。有什么想法吗?
这是Eclipse的.classpath:
<xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdit..../>
<classpathentry kind="lib" path="/home/Desktop/slf4j-api-1.7.5.jar" sourcepath="/home/Desktop/slf4j-api-1.7.5.jar"/>
<classpathentry kind="lib" path="slf4j-log4j12-1.7.5.jar"/>
<classpathentry kind="lib" path="log4j-1.2.17.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
答案 0 :(得分:4)
在您链接的教程页面上,有以下注释:
<强> SLF4J-log4j12-1.7.6.jar 强>
绑定log4j 1.2版,这是一个广泛使用的日志框架。您还需要将log4j.jar放在类路径上。
您是否包含log4j.jar?
答案 1 :(得分:4)
包含
后我的问题解决了slf4j-api-1.7.7.jar 和 的 SLF4J-简单1.7.7.jar 强>
在classpath上。
答案 2 :(得分:0)
您可以始终静态使用记录器,而不是使用loggerfactory并在每次需要时创建实例:
final static Logger logger = Logger.getLogger(HelloWorld.class);
根据这个SO答案,使用任何一种方式似乎没有多少开销:
What's the overhead of creating a SLF4J loggers in static vs. non-static contexts?
答案 3 :(得分:0)
我用
解决了这个问题import org.apache.log4j.Logger;
而不是
import java.util.logging.Logger;
答案 4 :(得分:0)
对我来说,当我在下面添加Maven依赖项时,它起作用了:
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>