JBOSS与LOG4J

不同的服务器对于使用 log4j 是有些不同的,实际使用中主要是用 tomcat 和 jboss 两类:

对于 tomcat, 它本身是没有配置 log4j 的,所以使用起来和常规的一样;

而在 jboss 中它是本身配置了 log4j 的,所以有时候在看项目代码时,其整个项目并没有 log4j 的配置文件,而在一些类中仍然定义了 Logger, 例如 static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class); ,

这就表明开发者使用了 jboss 默认的 log4j 的配置,我们可以在 jboss 下的对应的 log 目录下的 server.log 中看到日志, jboss 本身的 log4j 的配置是将 debug,info 级的日志写在 server.log 中,而像 error 等级别比较高的日志打印到控制台上,而写到 server.log 中的日志比较多,并不方便查看。于是我们想到使用自己的 log4j 配置写到某个具体的文件中(注意文件要先建立,才能往里面写东西, log4j 自己不能建立文件),但这里因为 jboss 有它自己的 log4j 配置,所以如果我们配置的 log4j 包含 Console 的 Appender 时,就会出错,错误类似于 ERROR: invalid console appender config detected, console stream is looping.
解决方法一是不用 Console 的 Appender, 或者改 jboss 的配置文件,在 jboss-service.xml 文件里 , 把
<mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging">
        <attribute name="ConfigurationURL">resource:log4j.xml</attribute>
        <attribute name="CatchSystemOut">false</attribute>
        <attribute name="Log4jQuietMode">true</attribute>
</mbean> 。

我建议不用 Console 的 Appender ,当然这是对 jboss3.2.x 是这样,对于 jboss4.0.x 如果我们要用自己的 log4j 配置照上述改还是会有问题,会有类似于 log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable 的异常,解决方法是把 /server/default/jbossweb-tomcat55.sar/META-INF/jboss-service.xml 中的以下两个熟悉改成 true
<attribute name="Java2ClassLoadingCompliance">true</attribute>
<attribute name="UseJBossWebLoader">true</attribute>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值