log4j ver 1.x:
他の人が述べているように、log4jはクラスパスの最初の構成ファイルを探します。参照: http: //logging.apache.org/log4j/1.2/manual.html
ただし、クラスパスに「log4j.xml」ファイルと「log4j.properties」ファイルの両方がある場合、実験から、log4jは「log4j.properties」よりも「log4j.xml」を優先するようです。
つまり、最初に、log4jはクラスパスで最初の「log4j.xml」ファイルを探しているようです。存在しない場合、log4jはクラスパスで最初の「log4j.properties」ファイルを探すようです。
以下のコードからコピーして貼り付けると、使用されている構成ファイルを判別するのに役立つ場合があります。
import org.apache.log4j.Logger;
public class TestLog4j
{
static
{
System.out.println("Classpath: [" + System.getProperty( "java.class.path" ) + "]" );
System.out.println("Found logging configuration files:");
System.out.println(" log4j.xml: " + Logger.getRootLogger().getClass().getResource( "/log4j.xml" ) );
System.out.println(" log4j.properties: " + Logger.getRootLogger().getClass().getResource( "/log4j.properties" ) );
}
public static void main(String[] args)
{
System.out.println("main():");
}
}
編集:
log4j ver 2.x:
デフォルトの構成ファイルの検索順序は、次の場所に記載されています:http: //logging.apache.org/log4j/2.x/manual/configuration.html
つまり、log4jバージョン2.xの場合、優先順位の高い構成ファイルが見つからない場合(log4j2-test。[properties | yaml | json | xml]など)、クラスパスで見つかった場合はファイルlog4j2.propertiesが使用されます。log4j2.xmlの優先順位が最も低く、log4j2の「プロパティ」、「yaml」、または「json」構成ファイルがすべて見つからない場合にのみ使用されることに注意してください。
注: log4j構成の問題のデバッグを支援するには、「log4j.debug」プロパティを次のように設定します。
java -Dlog4j.debug ...
参照: log4jを正しく初期化する方法は?