zoukankan      html  css  js  c++  java
  • Log4j的常见用法

    对于log4j,一般常用的只要保存如下的内容为属性文件即可:

     1 #log4j.rootLogger=DEBUG,A1,R
     2 log4j.rootLogger=INFO,A1,R
     3 log4j.appender.A1=org.apache.log4j.ConsoleAppender
     4 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
     5 log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
     6 
     7 log4j.appender.R=org.apache.log4j.RollingFileAppender
     8 #log4j.appender.R.File=F:/log4j/log.txt
     9 log4j.appender.R.MaxFileSize=500KB
    10 log4j.appender.R.MaxBackupIndex=10
    11 log4j.appender.R.layout=org.apache.log4j.PatternLayout
    12 log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
    13 
    14 #log4j.logger.org.springframework.transaction.interceptor=DEBUG

    注:上面的第8行是用在在磁盘上生成一个名称为log.txt的文件,这个路径得自己手动建立 

    下面作一个简要介绍:

    一、Log4j基础 
    1. Log4j简介 
      Log4j是Apache的一个开源项目,通过Log4j,我们可以记录程序运行时的出错信息,便于软件开发人员分析错误原因,修正Bug。Log4j也可以充当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。Log4j还可以监视程序运行的情况,周期性的记录到文件中或数据库中,以便日后进行统计分析。 

    2. Log4j由三种主要的组件组成 
      1)Logger组件 
        记录器组件负责产生日志,并能够对日志进行分类筛选,控制什么样的日志应该被输出。可以同时定义多个记录器,每个记录器有自己的名字,记录器之间通过名字来表明隶属关系(如记录器a.b是a.b.c的父亲)。在Log4j中有一个根记录器(org.apache.log4j.Logger类)永远存在,且不可以通过名字检索或引用,可以通过它的静态方法getRootLogger()方法得到它,而其他的记录器则通过静态方法getLogger(String name)来实例化。 
      2)Appender组件 
        在Log4j中,信息通过Appender组件输出到目的地,包括控制台、文件、GUI组件、远程套接字服务器、JMS、NT事件记录器及远程UNIX Syslog守护进程。如下: 
          org.apache.log4j.ConsoleAppender(控制台), 
          org.apache.log4j.FileAppender(文件), 
          org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), 
          org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), 
          org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 
      3)Layout组件 
        Layout组件负责格式化输出的日志信息,一个Appender只能有一个Layout。Log4j提供的layout有如下几种: 
          org.apache.log4j.HTMLLayout(以HTML表格形式布局), 
          org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), 
          org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息), 
          org.apache.log4j.xml.XMLLayout(由一系列中log4j.dtd中定义的<log4j:event>元素组件), 
          org.apache.log4j.PatternLayout(可以灵活地指定布局模式,同c语言的printf()一样灵活) 

    3. 记录器的日志级别 
      记录器的日志级别在org.apache.log4j.Level类中定义,一共有5种可能的级别,从低到高依次是DEBUG,INFO,WARN,ERROR和FATAL。如果一个记录器没有指定日志级别,那么它将从最近的一个指定了级别的祖先继承级别。 

    三、Log4j示例 
    1. 引入Log4j 
      Log4j官方下载地址(这个是2.0版): http://logging.apache.org/log4j/ 

     这个是集中下载的:http://logging.apache.org/

    这个是1.0版,一般推荐使用这个http://logging.apache.org/log4j/1.2/download.html

    2. log4j.properties 

    Log4J的属性文件配置:

     1 ### 定义根记录器日志级别  ###
     2 log4j.rootLogger = debug,stdout,file1,file2
     3 
     4 ### 输出到控制台 ###
     5 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
     6 log4j.appender.stdout.Target = System.out
     7 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
     8 log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
     9 
    10 ### 输出到日志文件 ###
    11 log4j.appender.file1 = org.apache.log4j.DailyRollingFileAppender
    12 log4j.appender.file1.File = logs/log.log
    13 log4j.appender.file1.Append = true
    14 ### 输出DEBUG级别以上的日志
    15 log4j.appender.file1.Threshold = DEBUG
    16 log4j.appender.file1.layout = org.apache.log4j.PatternLayout
    17 log4j.appender.file1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    18 
    19 ### 保存异常信息到单独文件 ###
    20 log4j.appender.file2 = org.apache.log4j.DailyRollingFileAppender
    21 log4j.appender.file2.File = logs/error.log
    22 log4j.appender.file2.Append = true
    23 ### 只输出ERROR级别以上的日志
    24 log4j.appender.file2.Threshold = ERROR
    25 log4j.appender.file2.layout = org.apache.log4j.PatternLayout
    26 log4j.appender.file2.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 

    3. 测试 

     1 package test;
     2 
     3 import org.apache.log4j.Logger;
     4 
     5 public class Test {
     6     private final static Logger logger = Logger.getLogger(Test.class);
     7 
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10         System.out.println("Test Begin!");
    11         logger.debug(" 1. debug ");
    12         logger.info(" 2. info ");
    13         logger.warn(" 3. warn ");
    14         logger.error(" 4. error ");
    15         logger.fatal(" 5. fatal ");
    16     }
    17 }

    四、XML文件配置方式 

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" configDebug="true">
        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="levelMin" value="DEBUG"/>
                <param name="AcceptOnMatch" value="true"/>
            </filter>
        </appender>
        <appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
            <param name="File" value="logs/error.log"/>
            <param name="Encoding" value="UTF-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMax" value="FATAL"/>
                <param name="LevelMin" value="ERROR"/>
            </filter>
        </appender>
        <!-- info.log文件只输出info信息 -->
        <appender name="INFO" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
            <param name="File" value="logs/info.log"/>
            <param name="Encoding" value="UTF-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMax" value="INFO"/>
                <param name="LevelMin" value="INFO"/>
            </filter>
        </appender>
        <appender name="WARN" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
            <param name="File" value="logs/warn.log"/>
            <param name="Encoding" value="UTF-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMax" value="WARN"/>
                <param name="LevelMin" value="WARN"/>
            </filter>
        </appender>
        <appender name="DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="datePattern" value="'.'yyyy-MM-dd-HH"/>
            <param name="File" value="logs/debug.log"/>
            <param name="Encoding" value="UTF-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%-5p] %d [%X{track}] [%X{model}] %m [%t][%c:%L]%n"/>
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMax" value="DEBUG"/>
                <param name="LevelMin" value="DEBUG"/>
            </filter>
        </appender>
        <root>
            <priority value="DEBUG"/>
            <appender-ref ref="DEBUG"/>
            <appender-ref ref="INFO"/>
            <appender-ref ref="WARN"/>
            <appender-ref ref="ERROR"/>
            <appender-ref ref="CONSOLE"/>
        </root>
    </log4j:configuration>
  • 相关阅读:
    knox 编译 源码
    springboot 新建项目
    python 在工程中处理相对路径的思考
    Mac配置虚拟环境Virtualenv,安装Python科学计算包详解
    Python 日志文件处理
    Django与JS交互的示例代码-django js 获取 python 字典-Django 前后台的数据传递
    python for 循环
    Java Script 学习日志 Div
    如何制作windows live writer绿色便携版
    中国大数据企业排行榜V6.0- 5 年后再去看看中几个大数据公司的发展状况
  • 原文地址:https://www.cnblogs.com/from/p/4186479.html
Copyright © 2011-2022 走看看