WebSphere & Log4j
IBM的东西,真是太麻烦了,一个日志都给你替换掉,太霸道了,Google了下,居然是个普遍想象,不过也有相关的解决方
案,基本好像都是在 WAS5,WAS6.1上的,我没环境,不过我这边的WAS7 没试成功过
描述两种网上的流行的配置
第一种:
在你的项目的\webapp\META-INF下建立一个名叫services的文件夹,然后建立一个名为org.apache.commons.logging.LogFactory的文件,里面添加一行文字:
org.apache.commons.logging.impl.Log4jFactory
即可解决
第二种:
①、在类路径下增加commons-logging.properties配置文件,文件内容为:
priority=1
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
②、.将类加载方式改成parent_last
以上两种我在 WAS 7都没试成功过。
就在绝望之际,柳暗花明,在国外的小角落了发现了,下面一段描述
*A very strange solution :* |
http://fixunix.com/websphere/538047-log4j-commons-logging-was6-1-0-19-a.html
尝试之果然有效
步骤如下(以windows为例):
1、将写好配置的commons-logging.properties 放到
D:\IBM\WebSphere\AppServer\profiles\AppSrv01\properties 目录
2、将 log4j-1.2.14.jar commons-logging-1.1.1.jar 放到
D:\IBM\WebSphere\AppServer\lib 目录下
3、将你的log4j.Properties 也放到步骤2的目录下
不需要改类加载气先后顺序,也不要要动工程结构,重启下服务,日志就生效,,完全是按照log4j的配置文件打印日志的。
目前知道的缺点:所有的应用公用了一个日志配置文件,,需要改变websphere的本身的配置
为啥没就人家weblogic 方便呢,几乎啥都不用动,想怎么用就用怎么用。
博主的解决方案不太现实,在生产环境中一个server环境下会有多个应用,这样会影响到其他应用。
直接Logger log=Logger.getLogger(this.getClass());用log4j的什么都不用配,直接打印日志!
priority=1
org.apache.commons.logging.LogFactory=org.apache.c ommons.logging.impl.LogFactoryImpl
org.apache.commons.logging.Log=org.apache.commons. logging.impl.Log4JLogger
去掉就启动起来了
但是不能正常的rename和delete生成的文件,即便是停掉application也不可以。
只有把server停掉或者restart之后才可以。
有没有什么好的解决方案呢?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。