在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)。

引用和的内容提到了"log4j:WARN No appenders could be found for logger"这个警告信息,这意味着在应用程序找不到适合的日志记录器。这可能是由于缺少log4j.properties或log4j.xml配置文件,或者配置文件存在但路径不正确。另外,还可能是配置文件的编码格式不正确导致。 针对这个问题,可以通过以下解决方案来解决: 1. 确保log4j.properties或log4j.xml配置文件存在,并且位于source文件夹下(通常是src/main/resources目录下)。 2. 检查配置文件的编码格式,确保它与应用程序的编码格式一致。 3. 检查配置文件的日志记录器配置是否正确,特别是检查是否有适当的appender配置来处理日志记录器。 鉴于以上解决方案,可以尝试将以下配置文件内容应用于log4j.properties或log4j.xml文件: ``` log4j.rootLogger=warn,CONSOLE,File log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} [%t [%c [%p - %m%n log4j.appender.File=org.apache.log4j.DailyRollingFileAppender log4j.appender.File.layout=org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} [%t [%c [%p - %m%n log4j.appender.File.datePattern='.'yyyy-MM-dd log4j.appender.File.Threshold = info log4j.appender.File.append=true log4j.appender.File.File=d://code/logs/flink/disk.log ``` 通过以上解决方案,可以解决"log4j:WARN No appenders could be found for logger"警告信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [log4j警告之log4j:WARN No appenders could be found for logger](https://blog.csdn.net/weixin_46474921/article/details/122066388)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [log4j:WARN No appenders could be found for logger](https://blog.csdn.net/xintonghanchuang/article/details/90903345)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值