log4j使用总结

来源:互联网 发布:淘宝店铺起名字 编辑:程序博客网 时间:2024/06/12 23:43

文章,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 //指定布局模式,必须同时指定conversionPatternlog4j.appender.stdout.layout.ConversionPattern=%d-[HL] %p %t %c - %m%n //指定具体的输出样式//appender2的配置log4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.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.PatternLayoutlog4j.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
原创粉丝点击