当前位置:首页 > 开发 > 开源软件 > 正文

Log4j

发表于: 2014-04-20   作者:ccii   来源:转载   浏览次数:
摘要: 一、Log4j基础 1. Log4j简介   Log4j是Apache的一个开源项目,通过Log4j,我们可以记录程序运行时的出错信息,便于软件开发人员分析错误原因,修正Bug。Log4j也可以充当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。Log4j还可以监视程序运行的情况,周期性的记录到文件中或数据库中,以便日后进行统计分析。 2. Log4j由
一、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官方下载地址: http://logging.apache.org/log4j/

2. log4j.properties
### 定义根记录器日志级别  ###
log4j.rootLogger = debug,stdout,file1,file2

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 输出到日志文件 ###
log4j.appender.file1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file1.File = logs/log.log
log4j.appender.file1.Append = true
### 输出DEBUG级别以上的日志
log4j.appender.file1.Threshold = DEBUG
log4j.appender.file1.layout = org.apache.log4j.PatternLayout
log4j.appender.file1.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 保存异常信息到单独文件 ###
log4j.appender.file2 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file2.File = logs/error.log
log4j.appender.file2.Append = true
### 只输出ERROR级别以上的日志
log4j.appender.file2.Threshold = ERROR
log4j.appender.file2.layout = org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 


3. 测试
package test;

import org.apache.log4j.Logger;

public class Test {
	private final static Logger logger = Logger.getLogger(Test.class);

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Test Begin!");
		logger.debug(" 1. debug ");
		logger.info(" 2. info ");
		logger.warn(" 3. warn ");
		logger.error(" 4. error ");
		logger.fatal(" 5. fatal ");
	}
}


四、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>

Log4j

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

推荐文章
1 log4j
2 log4j
3 Log4j
4 log4j
5 log4j
6 Log4j
7 log4j
8 log4j
9 log4j
10 LOG4j
11 log4j
12 Log4j
13 Log4j
14 log4j
15 log4j
16 log4j
17 log4j
18 log4j
19 Log4j
20 log4j
编辑推荐
1 log4j
log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的
2 Log4j
Log4j的类图 Logger - 日志写出器,供程序员输出日志信息 Appender - 日志目的地,把格式化好的日志
3 log4j
log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的
4 Log4J
1、Log4J主要由以下3大组件构成: (1)Logger:负责生成日志,并能够对日志信息进行分类筛选 一个L
5 log4j
http://www.iteye.com/topic/378077 log4j是一个非常强大的log记录软件,下面我们就来看看在项目中
1.在maven的pom.xml中引入 <dependency> <groupId>log4j</groupId> <artifact
log4j是java开发人员开发中最常用的日志工具,但是未必每个人都很明白地使用它。 本文将log4j的一些
log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的
Apache Logging Project Homepage: http://logging.apache.org Log4j的类图 Logger - 日志写出器,
log4j是一个非常强大的log记录软件,下面我们就来看看在项目中如何使log4j。 首先当然是得到log4j的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号