在main或junit中使用ApplicationContext加载bean抛出:No appenders could be found for logger

------------------------------------------问题

在使用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目录后,会发现原来srctest等所有的source follder文件夹中的文件都被展开在了classes里面(即src这层文件目录消失,其他不变,如包还是那么多层,如:src/com/xx/action变为com/xx/action)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值