log4j 版本 1.x:
正如其他人所说,log4j 在类路径中查找第一个配置文件。见: http: //logging.apache.org/log4j/1.2/manual.html
但是当类路径中同时存在“log4j.xml”和“log4j.properties”文件时,从实验来看,log4j 似乎优先于“log4j.xml”而不是“log4j.properties”。
即首先,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 版本 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 'properties'、'yaml' 或 'json' 配置文件都找不到时才会使用。
注意:为了帮助调试 log4j 配置问题,设置“log4j.debug”属性,例如:
java -Dlog4j.debug ...
另请参阅: 如何正确初始化 log4j?