web-dev-qa-db-ja.com

Log4JLogger 'の根本的な原因が見つからない、または使用できないのは何ですか?

クラスパスに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)
11
Debajyoti Roy

これはクラスパスの問題であり、クラスパスに別のバージョンのlog4jがありました。ネイサンライアンに感謝します!

5
Debajyoti Roy

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

15
searching9x

Commons-logging-1.2でlog4j-2.xを使用すると、この問題が発生しました。 log4j 1.2.xに戻り、すべてが問題ありません。

3
James Boutcher

Eclipse3.6のTomcat7でWebアプリケーションを実行しようとすると、このエラーが表示されることがあります。 Eclipseを再起動するだけでどこからともなく発生します。

いくつかの(!)「すべてのプロジェクトをクリーンアップ」し、サーバーにWebアプリを新たに展開した後、アプリケーションが再度実行されます。たぶん、誰か他の人が試行錯誤せずにこの謎を解くための正確な「呪文」を知っていますか?

2
Bruno Eberhard

ロガーの実装を提供する場合、実装はJava.lang.Stringを引数として取るコンストラクターを定義する必要があります。そうしないと、「org.Apache.commons.logging.LogConfigurationException:ユーザー指定のログクラス '...'が見つからないか、使用できません」というメッセージが表示されます。 Apache wikiの faq ページはそう述べています。

WebサービスやSpringなどの特定のプロジェクトを作成していますか?はいの場合は、ロガーを参照するプロパティを持つプロジェクト固有のプロパティファイルを分析してください。

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

サーブレットを使用したJavaプロジェクトがある場合。

1
mtk

ここに答えがあります Commons-logging with log4j2

ライブラリを含める:
log4j-jcl
参照:
https://logging.Apache.org/log4j/2.x/faq.html#which_jars

1
Max Robbertze

これと同じ例外が発生しました。

私はロガーの実装を持っています。

文字列を引数として取るコンストラクターはありませんでした。

私はそのようなコンストラクターを実装しました、そしてそれは私のために問題を解決しました。

1
Tom W

Apache commons logging jarがクラスパスにあるときにこのエラーが発生していましたが、log4jjarが何らかの理由で欠落していました。 log4j jarをクラスパスに追加すると、このエラーはなくなりました。

1
Shiv

私はこの問題に直面していて、log4jjarに関連するクラスパスの競合が原因であることがわかりました。プロジェクトで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>
0
aimhaj

このエラーはかなり一般的なようです。詳細を取得するには、次のオプションを使用してJVMを起動します。

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

私の場合、いくつかの欠落している依存関係が見つかりました。

[LogFactoryImpl@929338653 from Sun.misc.Launcher$AppClassLoader@1442407170] Attempting to instantiate 'org.Apache.commons.logging.impl.Log4JLogger'
[LogFactoryImpl@929338653 from Sun.misc.Launcher$AppClassLoader@1442407170] Trying to load 'org.Apache.commons.logging.impl.Log4JLogger' from classloader Sun.misc.Launcher$AppClassLoader@1442407170
[LogFactoryImpl@929338653 from Sun.misc.Launcher$AppClassLoader@1442407170] Class 'org.Apache.commons.logging.impl.Log4JLogger' was found at 'jar:file:/home/mcadiz/NetBeansProjects/LogFilter/dist/lib/commons-logging-1.2.jar!/org/Apache/commons/logging/impl/Log4JLogger.class'
[LogFactoryImpl@929338653 from Sun.misc.Launcher$AppClassLoader@1442407170] The log adapter 'org.Apache.commons.logging.impl.Log4JLogger' is missing dependencies when loaded via classloader Sun.misc.Launcher$AppClassLoader@1442407170: org/Apache/log4j/Priority
Exception in thread "main" Java.lang.ExceptionInInitializerError
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:804)
    at org.Apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.Java:541)
    at org.Apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.Java:292)
    at org.Apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.Java:269)
    at org.Apache.commons.logging.LogFactory.getLog(LogFactory.Java:655)
    at com.Oracle.logfilter.LogEntry.<clinit>(LogEntry.Java:19)

Log4j.jarをクラスパスに追加すると、問題が修正されました。

0
Mario.Cadiz