zoukankan      html  css  js  c++  java
  • LOG4J

    例子:

    <?xml version="1.0" encoding="GB2312" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <!--#log4j中有5级logger ,#FATAL 0 ,#ERROR 3 ,#WARN 4 ,#INFO 6 ,#DEBUG 7 -->
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n" />
    </layout>
    </appender>

    <appender name="debugFile" class="org.apache.log4j.RollingFileAppender">
    <!-- 设置日志输出文件名 -->
    <param name="File" value="D:/ci/log/samples-qui/szycj_debug.log" />
    <param name="MaxFileSize" value="20480KB" />
    <param name="MaxBackupIndex" value="10" />
    <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss:SSS} %5p %c{1}:%L ]: %m%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="DEBUG" />
    <param name="LevelMax" value="warn" />
    </filter>
    </appender>

    <appender name="errorFile" class="org.apache.log4j.RollingFileAppender">
    <!-- 设置日志输出文件名 -->
    <param name="File" value="D:/ci//log/samples-qui/szycj_error.log" />
    <param name="MaxFileSize" value="10240KB" />
    <param name="MaxBackupIndex" value="10" />
    <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{yy/MM/dd HH:mm:ss:SSS} %5p %c{1}:%L ]: %m%n" />
    </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="warn" />
    <param name="LevelMax" value="error" />
    </filter>
    </appender>

    <category name="com.fencer" additivity="false">
    <priority value="debug" />
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="debugFile" />
    <appender-ref ref="errorFile" />
    </category>

    <category name="java.sql" additivity="false">
    <priority value="debug" />
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="File" />
    </category>

    <root>
    <level value="debug" />
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="debugFile" />
    <appender-ref ref="errorFile" />
    </root>

    </log4j:configuration>

    logger.error(e.getMessage);打印的是message ,如果是null 的错误,视觉上什么都没有

    logger.error("Error",e);打印的是堆栈的信息,会打印整个信息

     -------------------------------------------------------------------------------------------
    Log4j
    介绍
    Log4j由三个重要的组件构成:日志信息的优先级 priority,日志信息的输出目的地Appender,日志信息的输出格式(布局)layout。

    1、日志的优先级,
    从低到高,依次有:DEBUG,INFO,WARN,ERROR,分别用来指定这条日志信息的重要程度;如果定义了了输入的级别为INFO,则只有等于及高于这个级别的才进行处理,此时将输入INFO,WARN,ERROR。值得注意的是,级别中还有两个关键字,
    ALL:打印所有的日志,
    OFF:关闭所有的日志输出。

    2、输出端 Appender

    log4j提供了以下几种常用的输出目的地:
    org.apache.log4j.ConsoleAppender,将日志信息输出到控制台
    org.apache.log4j.FileAppender,将日志信息输出到一个文件
    org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件,按照不同的配置可以定义每月一个日志文件,或者每周,每天,每小时,每分钟等输出一个新的日志文件。
    org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如名为example.log的文件会改名为example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为example.log.2,同时产生一个example.log文件。依此类推,直到example.log. MaxBackupIndex,MaxBackupIndex的值可在配置文件中定义。
    org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。
    org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。
    org.apache.log4j.net.SMTPAppender,将日志信息以邮件的方式发送到指定的邮箱。

    3、输出格式(布局)layout
    通过appender可以控制输出的目的地,而如果要控制输出的格式,就可通过log4j的layout组件来实现。通过配置文件定义一个appender的输出格式,Log4j提供的布局模式有以下几种:
    org.apache.log4j.ConsoleAppender,输出到控制台
    org.apache.log4j.HTMLLayout,以HTML表格形式布局
    org.apache.log4j.PatternLayout,可以灵活地指定布局模式
    org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串

    值得一提的是org.apache.log4j.PatternLayout 以Pattern方式的布局,使用Pattern的方式来指定布局。

    pattern 的参数如下:ConversionPattern参数的格式含义
    格式名 含义
    %c 输出日志信息所属的类的全名
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28 ;比如 %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
    格式可以参考 java类 SimpleDateFormat,不过 按照此类的设置会影响速度。你可以选择更快的方式 %d{ISO8601},%d{ABSOLUTE}, %d{RELATIVE}.或者使用log4j的ISO8601DateFormat, AbsoluteTimeDateFormat,RelativeTimeDateFormat 和 DateTimeDateFormat 方式.
    %f 输出日志信息所属的类的类名
    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    %m 输出代码中指定的信息,如log(message)中的message
    %M 输出日志信息中所发生的方法名。
    %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    %t 输出产生该日志事件的线程名

     

    1.1.1    使用

    (一)  使用

    1、  下载log4j的jar文件,复制到你的web-inf目录下

    2、  写配置文件log4j.properties,放到src目录下:

    #设置log4j两个重要的参数:输出级别(ERROR)、输出目的地(CONSOLE,DailyRolling)

    log4j.rootLogger=ERROR,FILE

    log4j.addivity.org.apache=true

     

     

    # 应用于控制台

    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

    log4j.appender.Threshold=DEBUG

    log4j.appender.CONSOLE.Target=System.out

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout

    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n

     

     

    #应用于文件

    log4j.appender.FILE=org.apache.log4j.FileAppender

    log4j.appender.FILE.File=d:/CGGMLog.log

    #log4j.appender.FILE.File=${webappHome}/WEB-INF/logs/CGGMLog.log

    log4j.appender.FILE.Append=true

    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

    # Use this layout for LogFactor 5 analysis

     

     

    # 应用于文件回滚

    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender

    log4j.appender.ROLLING_FILE.Threshold=ERROR

    log4j.appender.ROLLING_FILE.File=../webapps/OFMP/rolling.log

    log4j.appender.ROLLING_FILE.Append=true

    log4j.appender.ROLLING_FILE.MaxFileSize=10KB

    log4j.appender.ROLLING_FILE.MaxBackupIndex=1

    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout

    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

     

    # 用于按时间滚动的文件

    log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender

    log4j.appender.DailyRolling.File=../webapps/fund/SampleMessages.log4j

    log4j.appender.DailyRolling.DatePattern=yyyyMMdd-HH'.log4j'

    log4j.appender.DailyRolling.layout=org.apache.log4j.xml.XMLLayout

     

    #应用于socket

    log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender

    log4j.appender.SOCKET.RemoteHost=localhost

    log4j.appender.SOCKET.Port=5001

    log4j.appender.SOCKET.LocationInfo=true

     

    # Set up for Log Facter 5

    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout

    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

     

     

    # Log Factor 5 Appender

    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender

    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

     

     

    # 发送日志给邮件

    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender

    log4j.appender.MAIL.Threshold=FATAL

    log4j.appender.MAIL.BufferSize=10

    log4j.appender.MAIL.From=web@www.wuset.com

    log4j.appender.MAIL.SMTPHost=www.wusetu.com

    log4j.appender.MAIL.Subject=Log4J Message

    log4j.appender.MAIL.To=web@www.wusetu.com

    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout

    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

     

     

     

    # 用于数据库

    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender

    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test

    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver

    log4j.appender.DATABASE.user=root

    log4j.appender.DATABASE.password=

    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')

    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout

    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

     

     

    #自定义Appender

    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender

    log4j.appender.im.host = mail.cybercorlin.net

    log4j.appender.im.username = username

    log4j.appender.im.password = password

    log4j.appender.im.recipient = corlin@cybercorlin.net

    log4j.appender.im.layout=org.apache.log4j.PatternLayout

    log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

  • 相关阅读:
    堆排序
    快速排序
    hpp头文件与h头文件的区别
    c++_ url
    C++11:POD数据类型
    Android 触摸手势基础 官方文档概览2
    札记:android手势识别,MotionEvent
    强迫自己学习(心态篇),国庆,你准备去哪疯?
    深入理解计算机系统(2.5)---二进制整数的加、减法运算(重要)
    深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断
  • 原文地址:https://www.cnblogs.com/leonkobe/p/4172851.html
Copyright © 2011-2022 走看看