tomcat中多个项目(web项目)共用log4j.jar的情况下,如何让其各自打印各自的日志文件。及输出同级别日志信息

问题描述:

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这一项既可(本方法以亲测有效)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat,Web应用程序的部署描述符(即web.xml文件)可以位于以下位置之一: 1. ${catalina.base}/conf/[enginename]/[hostname]/[webappname].xml 2. ${catalina.base}/conf/[enginename]/[hostname]/ROOT.xml 3. ${catalina.base}/conf/[enginename]/[hostname]/[webappname]/META-INF/context.xml 4. ${catalina.base}/conf/[enginename]/[hostname]/[webappname]/WEB-INF/web.xml 5. [appBase]/[webappname]/META-INF/context.xml 6. [appBase]/[webappname]/WEB-INF/web.xml 其,${catalina.base} 是Tomcat的基本安装目录,[enginename] 是Tomcat引擎的名称,[hostname] 是虚拟主机的名称,[webappname] 是Web应用程序的上下文路径(也就是Web应用程序的名称)。 Tomcat会扫描上述位置的所有部署描述符,并根据以下顺序加载它们: 1. ${catalina.base}/conf/[enginename]/[hostname]/[webappname].xml 2. ${catalina.base}/conf/[enginename]/[hostname]/ROOT.xml 3. ${catalina.base}/conf/[enginename]/[hostname]/[webappname]/META-INF/context.xml 4. ${catalina.base}/conf/[enginename]/[hostname]/[webappname]/WEB-INF/web.xml 5. [appBase]/[webappname]/META-INF/context.xml 6. [appBase]/[webappname]/WEB-INF/web.xml 这意味着,如果您在 Tomcat 的 conf 目录下创建了一个与您的 Web 应用程序名称相同的 XML 文件,那么 Tomcat 将首先加载该文件,并忽略应用程序的 web.xml 文件。但是,如果您的应用程序包含 META-INF/context.xml 文件,则该文件将覆盖所有其他位置的部署描述符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值