`
jiaoxujin
  • 浏览: 62030 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Log4j与Jboss4共存

阅读更多
log4j是一个很好的开源的日志项目,下面就我在实际中使用的一些情况作一个小结(我所写的是以spring为框架的运用,之所以要提到这点,是因为在spring中专门有处理log4j的地方,而我也用到了这些地方)。
在使用的第一步你要明白你所发布的web项目所使用的服务器,因为不同的服务器对于使用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>
以上就是使用jboss服务器可能出现的问题,解决了这些再来使用log4j就比较简单了。
下面说说对于采用了spring框架的项目如何使用log4j,在spring中使用log4j,有些方便的地方,
1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下。
2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。
首先我们在web.xml中需要设定一下
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>WEB-INF/log4j.properties</param-value>
</context-param>

<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
其中第二部分就是能够动态修改log4j.properties的关键,容器会每60秒扫描log4j的配置文件 。对于log4j的配置文件如何写,这就不多说了,大家可以去google,有一点就是我们如果用RollingFileAppender或者FileAppender时,可以通过${webapp.root}来定位到服务器的发布的该项目下,这是spring把web目录的路径压入到了webapp.root的系统变量。然后,在log4j.properties 里就可以这样定义logfile位置
log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log
如果有多个web应用,怕webapp.root变量重复,可以在context-param里定义webAppRootKey。
当我们定义完log4j.properties后,剩下的就是在需要记录的class中new 出Logger了 
分享到:
评论

相关推荐

    JBOSS log4j 配置

    JBOSS log4j 配置 Log4j 是一个功能强大且灵活的日志记录工具,广泛应用于 Java 项目中。然而,在 JBOSS 服务器中使用 Log4j 时,可能会遇到一些冲突和配置问题。本文将详细介绍如何解决 JBOSS 和 Log4j 的冲突,...

    jboss下通过配置log4j.doc

    jboss下通过配置log4j,log4j在jboss下的配置

    JBoss Log4j

    JBoss Log4j

    总结的一些关于log4j的文章

    jboss下通过配置log4j.xml实现web应用的日志.htm log4j.xml log4j.xml配置文件设置.doc Log4J快速入门.htm pwosboy -JavaEye技术社区.htm 将系统日志发布到多个文件.htm 请问怎么控制日志的输出啊.htm 怎样关闭...

    log4jtest:log4j测试(for JBoss7.x or JBoss EAP6.x)

    Log4j测试1、应用服务器版本:JBoss7.x or JBoss EAP 6.x2、日志文件配置详见项目的log4j.properties文件3、访问如下地址日志生成到D:\log4jtest.log4、访问如下地址日志生成到D:\cuntest.log5、buffer默认8k,至少...

    jboss-logging-log4j-2.2.0.CR1.jar

    JBoss日志Log4j的实现 org.jboss.logging/jboss-logging-log4j/2.2.0.CR1/jboss-logging-log4j-2.2.0.CR1.jar

    JBoss ESB 例子

    JBoss ESB 入门例子。主要是一个Server和一个Client。

    hibernate,spring,struts,mysql,oracle,jboss,log4j,ibatis的jar文件

    包含hibernate,spring,struts,mysql,oracle,jboss,log4j,ibatis的jar文件

    jboss配置详解

    我们可以通过修改JBOSS安装目录"server"default"conf下的jboss-log4j.xml文件来修改JBOSS默认的log4j设置。在该文件中,我们可以看到,log4j的日志输出在JBOSS安装目录"server"default"log下的server.log文件中。 2...

    JBoss篇:安装与配置

    1. 日志文件设置:若需要修改 JBoss 默认的 log4j 设置,可修改 JBoss 安装目录下的 "server/default/conf" 文件夹中的 jboss-log4j.xml 文件。 2. web 服务的端口号的修改:这点在前文中有所提及,需要修改 JBoss ...

    hawt-log4j:一些log4j实用程序类

    log4j.appender.out.layout=org.jboss.hawt.log4j.SanitizingPatternLayout log4j.appender.out.layout.ConversionPattern=%p | %m%n log4j.appender.out.layout.replaceRegex=\\n log4j.appender.out.layout....

    jboss4开发指南

    jboss4 开发指南,指引大家了解jboss并逐渐熟悉jboss的强大之处

    Jboss4编程起步

    同时,本书使用了Sun提供的J2EE 1.4 Tutorial中(第四次更新)的实例,以阐述JBoss中J2EE应用的部署和配置。当然,本书并不是J2EE教程,但还是从最基本的层面介绍了J2EE中的各种主题,因此如果用户刚接触J2EE,则本书...

    基于JBoss 4.x的J2EE 1.4应用开发指南

    J2EE发展趋势 案例研究 J2EE Tutorial Java Pet Store Java Adventure Builder 钟情JBoss 4.x 全书内容安排 1 安装JBoss 4.x 2 安装JBoss-IDE 1.4.0 3 基于JBoss 4.x的JSF应用开发 ...

    一步一步安装配置Jboss4

    一步一步安装配置Jboss4 一步一步安装配置Jboss4 一步一步安装配置Jboss4

    Slf4j日志相关jar包

    Slf4j日志相关jar包 包含log4j Slf4j jboss-logging commons-logging

    The JBoss 4 Application Server Guide

    The JBoss 4 Application Server Guide PDF格式 &lt;br&gt;JBOSS AS 4.0.4

    JBoss 4.x使用

    基于JBoss 4.x的J2EE 1.4应用 开发指南

    JBoss4 Guide 中文

    Jboss get started

Global site tag (gtag.js) - Google Analytics