log4j ver 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 ver 2.x:
默认配置文件的搜索顺序记录在此处:http://logging.apache.org/log4j/2.x/manual/configuration.html
即,对于 log4j 版本 2.x,如果未找到更高优先级的配置文件(例如 log4j2-test)。属性 |亚姆尔|json |xml]) 则使用文件 log4j2.properties(如果在类路径中找到)。请注意,log4j2.xml具有最低的优先级,仅当找不到 log4j2 “属性”、“yaml” 或 “json” 配置文件时才会使用。
注意:为了帮助调试log4j配置问题,请设置“log4j.debug”属性,例如:
java -Dlog4j.debug ...
另请参阅:如何正确初始化log4j?