1,默认的文件路径及文件名:src下,log4j.xml或者log4j.property
2,自定义路径方式
1)
- System.setProperty( "log4j .configuration" , "com/logger/log4j .properties" );
这个时候能够加载到。第二次使用该文件的绝对路径加载:
- System.setProperty( "log4j .configuration" , "E:/project/j2se/src/com/logger/log4j .properties" );
但是这样LogManager并没有加载到该配置文件,查看LogManager源码,发现LogManager是通过构造java.net.URL去加载的,由于URL没有识别出该协议。在前面加上file:后,LogManager加载到了配置文件:
- System.setProperty( "log4j .configuration" , "file:E:/project/j2se/src/com/logger/log4j .properties" );
由于配置的是绝对路径,所以不通用。当时在网上查到两种方法取得该类所在目录:
- this .getClass().getResource( "/" ) //第一种
- File file = new File( "." );
- file.getAbsolutePath();//第二种
但通过打印发现第一种方法返回的是我的bin文件夹所在的url(带有file:),而第二种方法返回的是user.dir/.于是使用第一种方法能够满足我的需求:
- System.setProperty( "log4j .configuration" , SimppleLogging. class .getResource( "/com/logger" ).toString() + "/log4j .properties" );
SimppleLogging.class.getResource("/")返回的是bin文件夹,加上/com/logger就为SimppleLogging.class所在的目录,而log4j .properties也位于SimppleLogging.class同一文件夹下。
2)xml文件的DOMConfigurator.configure("c://log4j.xml");
prorertyies的pro.....configure("c://log4j.xml");