`

日志管理:(三)配置_JCL+Log4J中遇到的问题

log 
阅读更多

  今天,要做一个很简单的事,那就是项目上线了,需要把各个子功能的日志分开,方便系统出线问题后,日志的查看,用过log4j的童鞋们都知道,这是很简单的,配置一个appender,再配置一个category,指向这个appender即可.

  第一步:我先确定现在项目用的什么日志框架

  在部署完的jboss里看了一下,哇,真够丰富的,${jboss_home}\server\default\lib 里有:log4j.jar, ${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib 里有:self4j-api-1,5,2.jar ; self4j-log4j12-1.0.jar ; slf4j-simple-1.5.2.jar;log4j-1.2.14.jar,common-logging-1.1.1.jar.看来应用里sef4j+log4j 和jcl+log4j两套都支持,好吧,那只好去代码里看一下,是用的那套方案,代码中:

import org.apache.commons.logging.LogFactory;

 

  使用的jcl方案.

  这里想了一个问题,jboss的类加载顺序是怎么样的,从上面可以看出:分别在${jboss_home}\server\default\lib  和${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib  目录里,都有log4j包,其实上面没仔细说,在${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib 都有两个版本的log4j包,那实际在应用时是用那个jar包啊,好吧,先完成工作,做完才仔细分析,另外,吐糟一个这个项目的jar管理混乱问题.

 

  第二步:JCL的实现方式:log4j? simpleLog?

       好吧,姐在这里还是费了点时间,姐知道,Jakarta Commons Logging(JCL) 和self4j 一样,都是只提供一个接口,具体实现类可以配置,如果这部分的知识不懂,去看:日志管理(一):slf4j原理简单介绍 ,那么当前工程选用的那个实现方案呢?姐也知道,是在commons-logging.properties配置的,然后,去工程下找这个文件,在jboss的目录下找,都没找到,后来看了一篇文章,姐才知道,原来JCL也进步了,只要在class下找到log4j 的配置文件,就可以自动匹配,不用commons-logging.properties也可以的,self4j也是这样的,看来,技术都是朝省儿的方向发展啊!对了,JCL具体是怎么匹配的,还有个顺序问题,可以参照:http://www.blogjava.net/liuwentao253/archive/2006/08/03/61517.html

  总之,通过这步,我确定了JCL下面使用的是log4j实用的.

  

   第三步:修改jboss中日志配置文件,实现要求的功能

 

   ${JBOSS_HOME}/server/default/conf/log4j.xml 修改为我想要的内容,如下是修改完的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  Log4j Configuration                                                  -->
<!--                                                                       -->
<!-- ===================================================================== -->


<!--
   | For more configuration infromation and examples see the Jakarta Log4j
   | owebsite: http://jakarta.apache.org/log4j
 -->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

   <!-- ================================= -->
   <!-- Preserve messages in a local file -->
   <!-- ================================= -->

   <!-- A time/date based rolling appender -->
   <appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.home.dir}/log/server.log"/>
      <param name="Append" value="true"/>
      <param name="Threshold" value="INFO"/>
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
   </appender>
   
   <appender name="ArticleTransfer" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.home.dir}/log/transfer.log"/>
      <param name="Append" value="true"/>
      <param name="Threshold" value="INFO"/>
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
      <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>      
      </layout>
   </appender>
   <appender name="Evidence" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.home.dir}/log/evidence.log"/>
      <param name="Append" value="true"/>
      <param name="Threshold" value="INFO"/>
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>
      <layout class="org.apache.log4j.PatternLayout">         
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
   </appender>
  
   <!-- ============================== -->
   <!-- Append messages to the console -->
   <!-- ============================== -->

   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="Target" value="System.out"/>
      <param name="Threshold" value="INFO"/>

      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>
 
    
   <!-- ================ -->
   <!-- Limit categories -->
   <!-- ================ -->
   
   <!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
   <category name="org.apache">
      <priority value="INFO"/>
   </category>

   <!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
   <category name="org.jgroups">
      <priority value="WARN"/>
   </category>

   <!-- Limit jboss axis to INFO as its DEBUG is even more verbose -->
   <category name="org.jboss.axis">
      <priority value="INFO"/>
   </category>

   <!-- Limit the JSR77 categories -->
   <category name="org.jboss.management">
      <priority value="INFO"/>
   </category>



   <!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->

   <category name="cn.ipms.spider.evidence">
     <priority value="INFO" />
     <appender-ref ref="Evidence"/>
   </category>

   <category name="cn.ipms.supervise.article.service.impl.AlarmArticleTransferServiceImpl">
     <priority value="INFO" />
     <appender-ref ref="ArticleTransfer"/>
   </category>

   <root>
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="FILE"/>
   </root>

</log4j:configuration>

    修改的时候,要注意log4j:configuration各个子元素的顺序,具体可见:http://qingfeng825.iteye.com/admin/blogs/1816587,ok,功能实现.

 

分享到:
评论

相关推荐

    用log4j产生日志

    Log4j是Apache组织开发的一款强大的Java日志记录框架,广泛应用于各种Java应用程序中,用于收集、管理和分析程序运行过程中的日志信息。它提供了一种灵活且可配置的方式来控制日志输出,使得开发者能够更好地追踪...

    jcl.zip_jcl8com_log4j server

    【标题】"jcl.zip_jcl8com_log4j server" 涉及的主要知识点是JAVA编程中的日志处理,具体来说是自定义的日志库(Custom Logging Library)与Apache Log4J的类比和服务器端的应用。 【描述】中提到,这个压缩包内...

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案.docx

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...

    jcl-over-slf4j-1.6.0.jar logbank转log4j 日志转换 使用场景 实例

    通过这种方式,旧的JCL日志调用会被重定向到Log4j,并遵循我们在`log4j.properties`中定义的配置进行记录。 总结来说,`jcl-over-slf4j-1.6.0.jar`作为日志框架转换的桥梁,使得项目可以逐步从JCL过渡到更先进的SLF...

    ABEND_code_index.rar_jcl abend错误_jclABEND CODE_jcl报错信息 01c_jcl看错

    当JCL执行过程中遇到问题时,它会生成一个所谓的"ABEND"(Abnormal END)代码,这是一种错误报告机制。本文档“ABEND_code_index.rar_jcl abend错误_jclABEND CODE_jcl报错信息 01c_jcl看错”似乎专门针对JCL中的...

    log4j-2.17.1的jar包,导入即可使用

    综上所述,`log4j-2.17.1`不仅是一个日志工具,它还是一个强大的日志管理和监控平台,能够适应各种复杂的应用场景,并且具有高度的可配置性和安全性。在开发过程中正确使用Log4j,可以帮助开发者更好地理解和调试...

    idcams.rar_IdCa_idcams_jcl_jcl utility_jcl utili

    5. **错误处理和调试**:如何理解和处理IDCAMS执行过程中可能出现的错误,以及如何通过调试JCL和IDCAMS命令来找出问题所在。 6. **案例分析**:可能包含一些实际工作中的例子,演示如何在实际项目中运用IDCAMS与JCL...

    log4j各版本jar包

    在Java开发领域,日志管理是不可或缺的一部分,而Log4j作为Apache组织开发的一款开源日志框架,因其高效、灵活的特点,被广泛应用于各种Java应用程序中。本文将深入探讨Log4j的各个版本,包括其特性、更新内容以及...

    log4j.jar各个版本

    apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...

    jcl-over-slf4j-1.7.33-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.33.jar; 赠送原API文档:jcl-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.33.pom; 包含翻译后...

    log4j-2.3.jar

    4. `log4j-jcl-2.3.jar` 和 `log4j-jcl-2.6.2.jar`:这是对Jakarta Commons Logging(JCL)的适配,使得使用JCL的项目可以透明地使用Log4j作为日志实现。 这些不同版本的组件组合在一起,为开发者提供了灵活的日志...

    jcl-over-slf4j-1.7.25-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.25.jar; 赠送原API文档:jcl-over-slf4j-1.7.25-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.25-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.25.pom; 包含翻译后...

    tomcat log4j 配置及需要的几个jar

    在Java Web开发中,Tomcat是一个广泛使用的应用服务器,而Log4j则是一个流行的日志记录框架。本文将深入探讨如何在Tomcat...正确配置后,Log4j将提供强大的日志管理能力,帮助开发者更好地理解和解决应用程序中的问题。

    JCL.rar_IBM JCL Manual_jcl_主机JCL_大型 主机_大型主机

    这份"JCL.rar_IBM JCL Manual_jcl_主机JCL_大型 主机_大型主机"的压缩包,很可能是IBM官方或第三方提供的JCL参考手册,对于理解和掌握JCL的用法将大有裨益。文件列表中的"22164215309.pdf"很可能是该手册的电子版,...

    log4j需要的所有jar包

    7. **jcl-over-slf4j.jar** (可选): Jakarta Commons Logging (JCL) 的桥接器,使得使用JCL的日志调用可以通过SLF4J来路由到Log4j。 8. **logback-classic.jar**: 如果使用了SLF4J,而日志实现选择的是Logback,...

    apache-log4j-2.3 核心jar包

    log4j 2.3版本Jar包。...Log4j 2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解决了一些死锁的bug,而且配置更加简单灵活。

    jcl-over-slf4j-1.7.25.jar 由于下载次数较多,所需积分上去了,我已下调

    java 界里有许多实现日志功能的工具,最早得到广泛使用的是 log4j,许多应用程序的日志部分都交给了 log4j,不过作为组件开发者,他们希望自己的组件不要紧紧依赖某一个工具,毕竟在同一个时候还有很多其他很多日志...

    jcl-over-slf4j-1.7.30-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.30.jar; 赠送原API文档:jcl-over-slf4j-1.7.30-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.30-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.30.pom; 包含翻译后...

    Java Log4j使用详解

    本篇文章旨在详细介绍如何在Java中使用Log4j来管理日志,包括其配置方法以及与其他日志框架(如Commons Logging和JDK自带Logger)的对比。 #### 二、Jakarta Commons Logging (JCL) ##### 2.1 概述 Jakarta ...

    log4j的jar包

    **标题与描述解析** ...在实际开发中,理解和配置好Log4j对于跟踪代码问题、监控系统状态以及生成可读性强的日志文件非常重要。通过合理的配置,Log4j可以帮助我们实现高效且有针对性的日志记录。

Global site tag (gtag.js) - Google Analytics