问题描述:
1.项目A中有一个log4j.properties(配置为把日志输出到以项目名称命名的文件夹中)
2.为了减轻tomcat负担,把项目A的WEB-INF/lib下的所有jar文件拷贝到tomcat下的lib中并修改catalina.properties对其加载
3.把项目A复制一份为项目B
4.然后把项目A和项目B同时发布在tomcat中(发布时删除了WEB-INF/lib)访问项目A和项目B,发现两个应用的日志全部输出到了项目A的文件夹中。
在所有的jar文件都拷贝到tomcat/lib中的前提下,如何使得各个应用的log4j.properties生效呢??
目前知道的是,两个工程中的log4j.properties的确都被加载了,只是最后一个被加载的log4j.properties覆盖了前面加载的配置,也就是说只有最后被加载的生效了。
解决办法目前综合网上的有两种方法:
方法1:删除tomcat文件夹下里共用的log4j.jar,分别在项目里添加上自己的log4j.jar(要加在WEB-INF下的lib文件夹下),log4j.properties文件依然放在src下,项目启动加载会把其加载到WEB-INF下,正常情况这样就可以了,但是有些同学会遇到启动报错,说找不到log4j.jar这个jar,这里还须修改一下web.xml里的配置
正常情况下需要配置路径及监听器的,如下图(多个项目配多个日志请款下,其红圈里的value值要不一样,value自己随意起名字,不同即可)
我们只需把配置路径及监听器去掉即可。只留一个webAppRootKey这一项既可(本方法以亲测有效)