------------------------------------------问题:
在使用main或junit测试的时候抛出异常:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
问题原因在于没有将log4j.properties配置文件放入src文件夹的根目录,而放入了config/properties包中。
那么为什么在web(即启动tomcat)中运行的时候运行没有问题?因为在web.xml中使用spring的log4j监听的时候配置了context-param参数,指定了去某个包中读取该配置文件,而默认状况是在src文件夹中(即类文件.class的根目录下)读取该配置文件,所以便会出现此问题。
-----------------------------------------解决:
1.在把log4j.properties放入src中。
2.如果实在不想把properties放入src中,可以在项目根目录里重新建立一个source folder命名为test,然后在这里写测试的main方法的类或junit,并放入log4j.properties,而不需要删除在src中的config/properties包中的该配置文件。这样做其实也相当于在src中多添加一个多余的log4j.properties,只是好看一点而已,其原因是在项目里面的这些source folder文件夹中的文件都属于java resources,放入test和放入src效果都一样。最好理解的是,若启动服务器,那么在绝对路径中找classes目录后,会发现原来src和test等所有的source follder文件夹中的文件都被展开在了classes里面(即src这层文件目录消失,其他不变,如包还是那么多层,如:src/com/xx/action变为com/xx/action)。