Log4j和WAS的那些烂事
用WAS 5开始,记得一直烦的事情就是怎么样看到log4j打出来的日志。
WAS很搞,自认为follow了sun的标准,于是把common logging打出的日志,用JDK的log来处理。 而开源软件使用最多的还是log4j的日志实现。 于是很多人就开始纠结怎么能让WAS能把日志可以像TOMCAT那样简简单单打出来。
记得曾经搞定过,用的方法就是起一个commons-logging.properties文件,然后放到commons-logging.jar里面就搞定了。
现在做的项目想用同样的方法,结果发现搞不定了@@
用的是WAS 6.1.0.29, commons-logging 1.1.1 然后 log4j 是 1.2.15 日志倒是可以根据log4j.properties里配置的位置出来,可是里面根本没有内容。
于是根据IBM的官方文档http://www-01.ibm.com/support/docview.wss?uid=swg27010153,依葫芦画瓢照着做,里面提供两种方法,一个是我原先用的commons-logging.properties,一个是在WAR包里创建一个诡异的文件:META-INF/services/org.apache.commons.logging.LogFactory,里面放入org.apache.commons.logging.impl.Log4jFactory。
但是不管怎么样就是不出来。
查了N多文档,最后终于能让超级无比贵的WAS能做到和免费的TOMCAT一样的功能:打日志。
讲到这里,从搜索引擎过来正在啃手指,皱眉头,愁于解决问题的TX们急了,show me the money!
OK, 这是我的步骤:
1. commons-logging.properties放入
priority=1org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImplorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
org.apache.commons.logging.impl.Log4jFactory