关于tomcat下多个工程配置一个log4j.properties,达到输出各自的日志的问题,
经过实际工作的总结和调查,在这里做出一个总结和备忘。
提起log4j的配置,我们常用的配置办法是为每个工程建立一个log4j.properties文件,并在其中写入自己的输出日志的信息。
但是我在工作中遇到一个问题,其实log4j.properties文件的加载与项目引用的jar包有着不可分割的关系。
我遇到的两种情况如下:
1、log4j.jar存在于每个工程的lib下
你的工程下的\WebRoot\WEB-INF\lib\路径下存在自己项目需要的jar包,log4j.jar存在于此路径下时,
当你的tomcat启动时,使用的是工程各自路径下的log4j.jar包来加载每个工程自己的log4j.properties。
这个时候每个项目都可以使用自己的工程下的WebRoot\WEB-INF\classes\log4j.properties配置,
输出各自指定的日志文件。
2、log4j.jar不存在于每个工程的lib下,统一调用tomcat的lib下的log4j.jar
这个时候,你会发现多个工程的log4j.properties一次被加载,但是后加载的会覆盖前面加载的配置内容。
导致所有的工程的log都打出在最后加载的工程的log4j.properties中设定的log文件中。
这个时候解决办法就是,把所有的工程的日志配置在同一个log4j.properties文件中。
然后将这个log4j.properties文件放到tomcat的Tomcat 6.0\webapps\ROOT\WEB-INF\下。
例