我是 log4j 的新手,我似乎无法弄清楚这一点。如果我将 log4j.configuration 设置为一些不存在的垃圾文件,则以下程序将按我的预期工作。但如果我不这样做,它就会保持沉默(除了打印出属性):
package com.example.test;
import org.apache.log4j.*;
public class Log4jExample2 {
final static Logger logger = Logger.getLogger("test.Log4jExample2");
static void kvshow(String[] karray)
{
for (String k : karray)
{
String v = System.getProperty(k);
System.out.println(k+"="+v);
}
}
public static void main(String[] args) {
kvshow(new String[] {"log4j.configuration", "log4j.properties"});
BasicConfigurator.configure();
logger.debug("Hello world.");
}
}
这是一个运行时会话:
>java -cp test-20090219.jar com.example.test.Log4jExample2
log4j.configuration=null
log4j.properties=null
>java -cp test-20090219.jar -Dlog4j.configuration=blah.cfg com.example.test.Log4jExample2
log4j.configuration=blah.cfg
log4j.properties=null
0 [main] DEBUG test.Log4jExample2 - Hello world.
我难住了。(同样,没有名为 blah.cfg 的文件,这是我可以让事情正常工作的最简单方法) log4j 从哪里得到它的指令?