jboss中解决log4j配置冲突

在jboss中使用log4j时,因为jboss本身也使用log4j记录日志,常常会出现应用自己的日志会被记录到jboss的日志文件里或报appender closed。这是由于jboss首先加载自己身的log4j文件,后续又加载了应用身的log4j配置文件导致。最终解决方法如下:

配置jboss_server_home/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml文件里的Java2ClassLoadingCompliance及UseJBossWebLoader为false,如果自己的应用里存在WEB-INF/jboss-web.xml,则里面的java2ClassLoadingCompliance及java2ParentDelegaton属性也都设置成false。这样jboss加载webapp将使用JBoss 隔离的UCL作为Classloader。

在开发时,偶碰到一个奇怪的问题,简单的webapp加载log4j配置文件测试没有问题,能正常输出日志。但在使用spring的webapp中不会加载log4j.xml或log4j.properties,在web.xml中强行加载log4j配置得以解决,即在web.xml增加以下配置:

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


当设置Java2ClassLoadingCompliance及UseJBossWebLoader为false时,会导致webapp有可能找到不在jboss配置的数据库连接池,偶在连接池配置文件中增加了<use-java-context>false</use-java-context>,引用jndi时就不需要加java:。

官方对log4j的配置说明请参考:
[url=http://docs.jboss.org/process-guide/en/html/logging.html]jboss官方log4j配置用户手册[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值