关闭

log4j使用总结

标签: log4jpropertiesxml
191人阅读 评论(0) 收藏 举报
分类:

文章,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");
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22203次
    • 积分:470
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:17篇
    • 译文:1篇
    • 评论:1条
    最新评论