`

Log4j的使用

阅读更多

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

首先当然是得到log4j的jar档,推荐使用1.2.X版,下载地址:http://logging.apache.org/log4j/1.2

 

一、接下来我们先看一个最简单的示例:

1、java代码

package com.agileshell.log4j;
import org.apache.log4j.Logger;
public class HelloLog4j {
    private static Logger logger = Logger.getLogger(HelloLog4j.class);
    public static void main(String[] args) {
        // 记录debug级别的信息
        logger.debug("This is debug message.");
        // 记录info级别的信息
        logger.info("This is info message.");
        // 记录error级别的信息
        logger.error("This is error message.");
    }
}

  在java代码里面如果只创建和使用了Logger对象,但并没有正确书写log4j.properties配置文件,就会出现以下提示:

 

log4j:WARN No appenders could be found for logger (com.agileshell.log4j.HelloLog4j).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这不是报错,而是警告信息:配置文件log4j.properties 缺少、错误、或路径不对。

2、配置文件 log4j.properties

log4j.rootLogger=INFO,toConsole
log4j.appender.toConsole=org.apache.log4j.ConsoleAppender  
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout 
log4j.appender.toConsole.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n

 结果:

 

2013-05-01 19:00:54,954 [com.agileshell.log4j.HelloLog4j]-[INFO] This is info message.
2013-05-01 19:00:54,956 [com.agileshell.log4j.HelloLog4j]-[ERROR] This is error message.

 

二、基本使用

    Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

1 、定义配置文件
    其实您也可以完全不使用配置文件,而是在代码中配置 Log4j 环境。但是,使用配置文件将使您的应用程序更加灵活。 Log4j 支持两种配置文件格式,一种是 XML格式的文件,一种是 Java 特性文件(键 = 值 properties 文件)。下面我们介绍使用 Java 特性文件做为配置文件的方法:

 

    1 ) 配置根 Logger ,其语法为: log4j.rootLogger = [ level ] , appenderName, appenderName, …
 其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者您定义的级别。 Log4j 建议只使用四个级别 ,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了 INFO 级别,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来 。 appenderName 就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。

 

    2)配置日志信息输出目的地 Appender ,其语法为:

log4j.appender.appenderName = fully.qualified.name.of.appender.class. 其中, Log4j 提供的 appender 有以下几种:

               1.org.apache.log4j.ConsoleAppender (控制台),
          2.org.apache.log4j.FileAppender (文件),
          3.org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件),
          4.org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
          5.org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

 

    3)配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

其中, Log4j 提供的 layout 有以 e 几种:
          1.org.apache.log4j.HTMLLayout (以 HTML 表格形式布局),
          2.org.apache.log4j.PatternLayout (可以灵活地指定布局模式),
          3.org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串),
          4.org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)

Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息 :
   %p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL
   %r 输出自应用启动到输出该 log 信息耗费的毫秒数
   %c 输出所属的类目,通常就是所在类的全名
   %t 输出产生该日志事件的线程名
   %n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”
   %d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921
   %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)

 

2. 在代码中使用 Log4j
    1)得到记录器
    使用 Log4j ,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
public static Logger getLogger( String name)
    通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。 Name 一般取本类的名字,比如:
static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () )
 2) 读取配置文件
当获得了日志记录器之后,第二步将配置 Log4j 环境,其语法为:

    BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。
 PropertyConfigurator.configure ( String configFilename) :读取使用 Java 的特性文件编写的配置文件。
 DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。
  3)插入记录信息(格式化日志信息)
当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
   Logger.debug ( Object message ) ;
   Logger.info ( Object message ) ;
   Logger.warn ( Object message ) ;
   Logger.error ( Object message ) ; 

 

三、Sample

1、输出为文本文件

#设置级别:  
log4j.rootLogger=debug,appender1  
#输出到文件(这里默认为追加方式)  
log4j.appender.appender1=org.apache.log4j.FileAppender  
#设置文件输出路径  
文本文件  
#log4j.appender.appender1.File=c:/Log4JDemo02.log    
#设置文件输出样式  
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout  

 2、输出为HTML文件

#设置级别:  
log4j.rootLogger=debug,appender1  
#输出到文件(这里默认为追加方式)  
log4j.appender.appender1=org.apache.log4j.FileAppender  
#设置文件输出路径  
log4j.appender.appender1.File=c:/Log4JDemo02.html  
#设置文件输出样式  
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout

 3、SimpleLayout样式

#设置级别和目的地  
log4j.rootLogger=debug,appender1  
#输出到控制台  
log4j.appender.appender1=org.apache.log4j.ConsoleAppender  
#设置输出样式  
log4j.appender.appender1.layout=org.apache.log4j.SimpleLayout

 4、自定义样式

 

#设置级别和目的地  
log4j.rootLogger=debug,appender1  
#输出到控制台  
log4j.appender.appender1=org.apache.log4j.ConsoleAppender  
#设置输出样式  
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout  
#自定义样式  
log4j.appender.appender1.layout.ConversionPattern=%r [%t] [%p] - %c -%l -%m%n

 5、企业应用设置:特定包的级别和目的地

 

如J2EE中的BaseDao、BaseAction、BaseService等等,则我们可以将各层的日志信息分类输出到各个文件。

#省略根,只设置特定包的级别和目的地  
log4j.logger.com.agileshell.log4j=debug,appender1  
log4j.logger.com.agileshell.log4jDao=info,appender1,appender2  
  
#输出到控制台  
log4j.appender.appender1=org.apache.log4j.ConsoleAppender  
#设置输出样式  
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout  
#自定义样式  
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n  
  
#输出到文件(这里默认为追加方式)  
log4j.appender.appender2=org.apache.log4j.FileAppender  
#设置文件输出路径  
log4j.appender.appender2.File=c:/Log4JDemo07_Dao.log  
#设置文件输出样式  
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout  
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n  

 6、log4j.xml的配置方式

 

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  
    <appender name="appender1"  
        class="org.apache.log4j.RollingFileAppender">  
        <param name="File" value="logfile08.html" />  
        <param name="MaxFileSize" value="1MB" />  
        <param name="MaxBackupIndex" value="5" />  
        <layout class="org.apache.log4j.HTMLLayout">  
        </layout>  
    </appender>  
  
    <root>  
        <level value="debug" />  
        <appender-ref ref="appender1" />  
    </root>  
</log4j:configuration>

 

四、补充说明

           Logger.debug(Object message);// 调试信息
        Logger.info(Object message);// 一般信息
        Logger.warn(Object message);// 警告信息
        Logger.error(Object message);// 错误信息
        Logger.fatal(Object message);// 致命错误信息

分享到:
评论

相关推荐

    log4j使用教程(详解)

    log4j使用教程 log4j使用教程 log4j使用教程

    log4j使用详解log4j使用详解

    log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解log4j使用详解

    apache log4j使用大全

    apache log4j使用大全 log4j使用

    Log4j使用实例

    详细介绍Log4j使用实例

    最详细的Log4j使用教程

    最详细的Log4j使用教程 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。 一...

    Log4J使用完全手

    Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手Log4J使用完全手

    Log4j使用手册

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    log4j使用笔记

    1.该笔记中详细的介绍了log4j的作用和优势、具体地讲解了log4j的使用步骤和详细配置。 2.深入的说明了log4j在项目中的重要地位以及给项目带来的影响,同时说明了log4j的优化。 3.该笔记从log4j的简介/入门开始介绍,到...

    log4j使用详解 j2EE

    很详细的介绍了log4j的使用方法和用例 很详细的介绍了log4j的使用方法和用例 很详细的介绍了log4j的使用方法和用例

    log4j使用方法

    log4j使用方法 1、Log4j是什么? 2、Log4j的概念 3、Log4j的配置文件 4、Log4j在程序中的使用

    log4j使用简介.txt

    log4j使用简介.txt

    Log4j使用教程.pdf

    Log4j使用教程.pdf,详细介绍了log4j的使用方法和配置

    log4j使用jar文件

    log4j使用jar文件 和使用说明 个人案例解释

    Log4J使用完全手册

    Log4J使用完全手册

    Android log4j使用Demo

    Android log4j使用DemoAndroid log4j使用DemoAndroid log4j使用DemoAndroid log4j使用Demo

    slf4j+log4j使用方式

    本工程用于演示如何使用slf4j+log4j完美构建日志 本工程编码方式:UTF-8 本工程开发工具:Eclipse 参考博客:http://blog.csdn.net/gaohuanjie/article/details/53405020

    log4j使用例子和文档

    log4j使用,这个里面包含了一个例子,一个文档,例子里面既介绍了jdk中的Logger又有Log4j的例子,而文档则是全部介绍的Log4j的使用的,非常全面,值得一看。

    log4j使用详细方法

    log4j详细配置方法加例子和说明,肯定一看即会

    log4j使用手册和API chm格式

    log4j使用手册和API chm格式

Global site tag (gtag.js) - Google Analytics