是什么原因导致Log4JLogger无法找到或无法使用?

时间:2012-05-21 20:48:08

标签: java log4j apache-commons-logging

我在类路径中有commons-logging.jar(v1.0.4)和log4j-1.2.8.jar,并且遇到以下运行时错误:

Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable.
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)

10 个答案:

答案 0 :(得分:13)

如果您使用Maven,则必须确保在pom.xml中声明commons-logging和log4j

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
</dependencies>

如果您只声明公共记录,则会收到错误Log4JLogger cannot be found or is not useable

答案 1 :(得分:4)

这是一个类路径问题,我们在类路径中确实有另一个版本的log4j。谢谢Nathan Ryan!

答案 2 :(得分:3)

使用log4j-2.x和commons-logging-1.2有这个问题。恢复到log4j 1.2.x并且对全世界都很好。

答案 3 :(得分:2)

当我尝试在我的eclipse 3.6中运行tomcat 7上的Web应用程序时,有时会看到此错误。它只是通过重启eclipse而无处不在。

在服务器上的几个(!)“清理所有项目”和Web应用程序的新部署之后,应用程序再次运行。也许其他人知道确切的“咒语”来解决这个谜团而不经过反复试验?

答案 4 :(得分:1)

如果要为记录器提供实现,则实现必须定义一个以java.lang.String作为参数的构造函数。否则,您将收到“org.apache.commons.logging.LogConfigurationException:用户指定的日志类'...'无法找到或无法使用。” apache wiki的faq页面说明了这一点。

您是否正在创建任何特定项目,如网络服务或春天等?如果是,那么请分析项目特定的属性文件,这些文件将具有引用Logger的属性,如

<property name="logger">javax.servlet,org.apache.commons.logging</property>

如果你有一个带servlet的java项目。

答案 5 :(得分:1)

我收到了同样的例外。

我确实有logger的实现。

它没有将String作为参数的构造函数。

我实现了这样的构造函数,并为我解决了这个问题。

答案 6 :(得分:1)

当apache commons登录jar在我的类路径中但是log4j jar在某种程度上缺失时,我收到了这个错误。一旦我将log4j jar添加到我的类路径,这个错误就消失了。

答案 7 :(得分:1)

这里有一个答案 Commons-logging with log4j2

包括库:
log4j-jcl
另请参阅:
https://logging.apache.org/log4j/2.x/faq.html#which_jars

答案 8 :(得分:0)

此错误似乎非常普遍。要获取更多详细信息,请使用以下选项启动JVM:

userInfo

就我而言,发现一些缺少的依赖项。

-Dorg.apache.commons.logging.diagnostics.dest=STDOUT

将log4j.jar添加到类路径中可以解决此问题。

答案 9 :(得分:0)

我遇到了这个问题,发现这是由于与log4j jar有关的类路径冲突引起的。 当我在项目中使用Maven时,解决方法是为log4j添加依赖项管理,如下所示。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>
</dependencyManagement>