12

commons-logging を介して log4j を使用しようとしていますが、log4j プロパティ ファイルの名前が log4.properties でない場合に問題が発生します。次のエラーが表示されます: log4j:WARN ロガー (LogMePlease) のアペンダーが見つかりませんでした。log4j:WARN log4j システムを適切に初期化してください。

私のコードは非常に単純です:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class LogMePlease 
{
static Log l = LogFactory.getLog(LogMePlease.class);

public static void main(String [] args)
{
    l.warn("Hello World!");
}
}

私のクラスパスには、 次のエントリを含むcommons-logging.propertiesファイルがあります。

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
log4j.configuration=log4j-test.properties

および log4j-test.propertiesファイル

このコードを実行すると、

log4j:WARN No appenders could be found for logger (LogMePlease).
log4j:WARN Please initialize the log4j system properly.

log4j-test.properties ファイルの名前を log4j.properties に変更すると、すべてが機能します。したがって、問題は、log4j.properties ファイルに任意の名前を使用するようにコモンズ ロギングを設定するにはどうすればよいかということです。

4

3 に答える 3

11

log4j がシステム プロパティを検索する間、ファイルcommons-logging.propertiesはコモンズ ロギングからのみ読み取られます。log4j.configuration

-Dlog4j.configuration=log4j-test.propertiesそのため、コマンド ラインで JVM オプションとして指定するかSystem.setProperty()、ロギング メソッドの最初の呼び出しの前に呼び出す必要があります (これは通常、達成するのがかなり困難です)。

注: 可能であれば、XML config を使用してくださいlog4j.xml。log4j を構成するためのはるかにシンプルで強力です。

于 2009-10-06T07:48:22.923 に答える
1

次のように、システム プロパティ値の前にプロトコルを追加する必要があります: -Dlog4j.configuration=file://log4j-test.properties

プロトコルがなければ、クラスパスを調べます。

于 2013-10-10T18:20:00.870 に答える