log4j使用总结

原创 2016年05月31日 17:08:50

文章,xml代码部分参考链接http://blog.csdn.net/coolcoffee168/article/details/6368949

一、log4j的使用过程,通用步骤如下:

1.加入log4j-xx.jar——提供相关类的支持
2.写log4j.properties或log4j.xml,可自行命名——log4j本身的配置文件
3.载入配置文件,spring环境中可以用spring自带的Log4jConfigListener监听器来加载,只需要通过context-param指定配置文件的位置及加载参数
代码中手动载入的方式是通过 PropertyConfigurator.configure(file)方法来载入

4.获得logger——直接用log4j:Logger logger = Logger.getLogger(“xxx”) 

   通过commcon-logging : Log logger2 = LogFactory.getLog("mytest");

   getLogger的参数既可以指定log4j.xml中配置好的logger、category名字,也可以指定为任意的字符串、test.class。首先会去配置文件中扫描,如果有同名的logger或者category则直接加载使用,如果没有,则创建一个新的logger,名称为指定字符串或者类的全名,打印级别、appender的设置与其上级logger一致,比如rootLogger。如果rootLogger的配置为空,则无法正常打印出日志

5.使用 ——如logger.info()等
二、log4j配置文件介绍
1.properties文件
log4j.rootCategory=INFO, stdout , R //日志级别, appender1, appender2
//appender1的配置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender  //appender所对应的支持类
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout //指定布局模式,必须同时指定conversionPattern
log4j.appender.stdout.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n //指定具体的输出样式
//appender2的配置
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${应用名.root}/WEB-INF/logs/xx.log //输出的文件路径
log4j.appender.R.MaxFileSize=1024KB //每个日志文件的最大的大小,超过则新建一个文件
log4j.appender.R.MaxBackupIndex=10 //新建文件的最大个数
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n // %d:日期时间 %p:打印优先级 %c:类全名 %m:代码中指定的消息 %n:换行


2.xml 文件
xml方式比properties方式使用更为方便,大概模板如下
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  //文档定义
    <log4j:configuration>
        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">...</appender>
        <appender name="FILE" class="org.apache.log4j.FileAppender">...</appender>
        <appender name="DATABASE" class="org.apache.log4j.jdbc.JdbcAppender"></appender>\
        
        <logger name="mytest" additivity = "false">
            <level value="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        <logger>
         
        <category name="dbtest">
            <level value="ERROR">
            <appender-ref ref="DATABASE"/>
        <category>                                                                                                                                                 <root>
            <level value="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        </root>
    </log4j:configuration>

    如上所示,给出了一个标准的log4j的xml格式的配置文件。    (1)appender元素给出了日志输出目的地的定义,不同种类的appender,其对应的具体参数均不同,但都会指定layout,通常指定为PatternLayout,一旦    指定了PatternLayout布局方式,就要指定其输出样式ConversionLayout。通常ConversionLayout为表达式,但是当appender类型为JdbcAppender时,value    为insert语句,如INSERT INTO
 iecs.log4j(stamp,thread, info_level,`class`,message) VALUES ('%d', '%t', '%p', '%c', '%m'),表格需要事先建好。    (2)category 和 logger都可以用来定义一个日志输出器,可以在加载Logger的时候指定需要加载的日志输出器名字。如Logger.getLogger("mytest"),        level是日志打印级别,appender-ref 指定了所引用的appender。

    (3)如果定义了上述root节点,则在打印日志信息的时候,会发现日志被重复打印了。解决这个问题,要么去掉root节点的定义;要么加上        addtivity="false"属性。

附上完整的配置代码

<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">   
   
<log4j:configuration>   
   
 <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">   
  <layout class="org.apache.log4j.PatternLayout">   
   <param name="ConversionPattern"   
    value="%d - %c -%-4r [%t] %-5p %x - %m%n" />   
  </layout>   
     
  <!--限制输出级别-->   
  <filter class="org.apache.log4j.varia.LevelRangeFilter">   
   <param name="LevelMax" value="ERROR"/>   
   <param name="LevelMin" value="TRACE"/>   
  </filter>   
 </appender>   
    
 <appender name="FILE" class="org.apache.log4j.FileAppender">   
  <param name="File" value="${catalina.home}/logs/testxml.log"/>   
  <layout class="org.apache.log4j.PatternLayout">   
   <param name="ConversionPattern"   
    value="%d - %c -%-4r [%t] %-5p %x - %m%n" />   
  </layout>   
 </appender>    
    
 <appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">   
  <param name="URL" value="jdbc:mysql://10.47.180.190:5518/mydb"/>   
  <param name="driver" value="com.mysql.jdbc.Driver"/>   
  <param name="user" value="root"/>   
  <param name="password" value="*****"/>       
  <layout class="org.apache.log4j.PatternLayout">   
   <param name="ConversionPattern"   
    value="INSERT INTO iecs.log4j(stamp,thread, info_level,`class`,message) VALUES ('%d', '%t', '%p', '%c', '%m')" />   
  </layout>   
 </appender>   
    
 <!-- 发邮件(只有ERROR时才会发送!) -->   
 <appender name="MAIL"   
  class="org.apache.log4j.net.SMTPAppender">   
  <param name="threshold" value="debug" />   
  <!-- 日志的错误级别   
   <param name="threshold" value="fatal"/>   
  -->   
  <!-- 缓存文件大小,日志达到512K时发送Email -->   
  <param name="BufferSize" value="512" /><!-- 单位K -->   
  <param name="From" value="test@163.com" />   
  <param name="SMTPHost" value="smtp.163.com" />   
  <param name="Subject" value="juyee-log4jMessage" />   
  <param name="To" value="test@163.com" />   
  <param name="SMTPUsername" value="test" />   
  <param name="SMTPPassword" value="test" />   
  <layout class="org.apache.log4j.PatternLayout">   
   <param name="ConversionPattern"   
    value="%-d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%c] %m%n" />   
  </layout>   
 </appender>   
   
 <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">   
  <param name="BufferSize" value="256" />   
  <appender-ref ref="DATABASE" />   
 </appender>   
    
 <!--通过<logger></logger>的定义可以将各个包中的类日志输出到不同的日志文件中-->   
 <logger name="com.litt2.log4j" additivity="false">      
        <level value="WARN" />      
        <appender-ref ref="CONSOLE" />      
    </logger>   
   
 <!--通过<category></category>的定义可以将各个包中的类日志输出到不同的日志文件中-->   
  <logger name="mytest" additivity="false">      
     <level value="DEBUG" />    
     <appender-ref ref="CONSOLE" />   
     <appender-ref ref="FILE" />   
  </logger>   
  <category name="dbtest">
  	<priority value="info"/>
  	<appender-ref ref="DATABASE"/>
  </category>
  <root>
  	<level value="INFO"></level>
  	<appender-ref ref="CONSOLE"/>
  </root>  
</log4j:configuration>   





    三、载入配置文件
1.Spring方式 监听器+context-param
  
2.默认加载
  如果取名叫做log4j.properties,则log4j会自动载入配置文件,log4j.properties放在classpath下面
3.手动加载
  PropertyConfigurator.configure("D:\\develop\\apache-tomcat-6.0.24-spring\\wtpwebapps\\mvctest\\WEB-INF\\classes\\log4jxxxx.properties");

相关文章推荐

Log4j 经典总结

一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog...
  • Draling
  • Draling
  • 2015年01月13日 14:32
  • 709

log4j-总结

声明:这是转载的,内容根据网络整理而成。 1-slf4j 为什么使用slf4j SLF4J(Simple logging facade for Java) SLF4J是一个用于日志系统的简...

log4j2 入门学习与总结

log4j2 学习与总结大纲: log4j2 配置文件加载 log4j2 配置文件结构图 log4j2 配置文件说明 log4j2 Appenders.child.Filter.ThresholdFi...

log4j使用总结

        Log4j是apache的一个开源项目,用来操作程序日志信息的框架。因便于管理,在工程中用来代替System.out打印语句。通过配置Log4j中的log4j.properties,可...

Log4j使用总结以及配置

Log4j使用总结 一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器...

log4j使用总结

  • 2012年12月20日 14:56
  • 24KB
  • 下载

Log4j 2 使用总结

Log4j 2 包含了基于LMAX 分离库的下一代的异步日志系统,在多线程环境下,异步日志系统比 Log4j 1.x 和Logback 提高了10倍性能提升(吞吐量和延迟率 )。原文如下: Log4...

Log4j使用总结

Log4j使用总结关键字: log4j 一、介绍Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT...

log4j配置 使用总结

一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslo...

commons-logging和Log4j使用总结

Apache通用日志工具commons-logging和Log4j使用总结   前言   在程序开发中,有时候为了跟踪代码的运行情况,需要在程序代码中加入一些打印代码运行情况的日志代码,在早期的C语言...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:log4j使用总结
举报原因:
原因补充:

(最多只允许输入30个字)