`

log4j入门(1)

    博客分类:
  • Java
阅读更多
--by   blues(zhaochaohua@sina.com)  
  PART   1   介绍  
  log4j的好处在于:  
  1.通过修改配置文件,就可以决定log信息输出到何处(console,文件,...),是否输出。  
  这样,在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(...)等)。  
  2.使用log4j,需要整个系统有一个统一的log机制,有利于系统的规划。  
   
  log4j的使用本身很简单。但合理地规划一个系统的统一log机制需要周全的考虑。  
   
  其他关于log4j的信息参看log4j自带的文档。  
   
  PART   II   配置文件详细解释  
  先看一个配置文件的例子:  
  1.配置文件的例子  
  log4j.rootLogger=DEBUG  
  #将DAO层log记录到DAOLog,allLog中  
  log4j.logger.DAO=DEBUG,A2,A4  
  #将逻辑层log记录到BusinessLog,allLog中  
  log4j.logger.Businesslog=DEBUG,A3,A4  
  #A1--打印到屏幕上  
  log4j.appender.A1=org.apache.log4j.ConsoleAppender  
  log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A1.layout.ConversionPattern=%-5p   [%t]   %37c   %3x   -   %m%n  
  #A2--打印到文件DAOLog中--专门为DAO层服务  
  log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender  
  log4j.appender.A2.file=DAOLog  
  log4j.appender.A2.DatePattern='.'yyyy-MM-dd  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n  
   
  #A3--打印到文件BusinessLog中--专门记录逻辑处理层服务log信息  
  log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender  
  log4j.appender.A3.file=BusinessLog  
  log4j.appender.A3.DatePattern='.'yyyy-MM-dd  
  log4j.appender.A3.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A3.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n  
   
  #A4--打印到文件alllog中--记录所有log信息  
  log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender  
  log4j.appender.A4.file=alllog  
  log4j.appender.A4.DatePattern='.'yyyy-MM-dd  
  log4j.appender.A4.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A4.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n  
   
   
  2.Appender的使用  
  一个Appender代表log信息要写向的一个地方。log4j可使用的Appender有很多类型,这里只考虑3种:ConsoleAppender,FileAppender,DailyRollFileAppender  
  2.1   ConsoleAppender  
  如果使用ConsoleAppender,那么log信息将写到Console。就是直接把信息打印到System.out上了。  
  2.2   FileAppender  
  使用FileAppender,那么log信息将写到指定的文件中。这应该是比较经常使用到的情况。  
  相应地,在配置文件中应该指定log输出的文件名。如下配置指定了log文件名为demo.txt  
  log4j.appender.A2.File=demo.txt  
  注意将A2替换为具体配置中Appender的别名。  
  2.3   DailyRollingAppender  
  使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。如下配置文件就会每天产生一个log文件,每个log文件只记录当天的log信息:  
   
  log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender  
  log4j.appender.A2.file=demo  
  log4j.appender.A2.DatePattern='.'yyyy-MM-dd  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=%m%n  
   
  3.Layout的配置  
  Layout指定了log信息输出的样式。  
  详细信息请查看PatternLayout的javadoc。  
  例子1:显示日期和log信息  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss,SSS}   %m%n  
  打印的信息是:  
  2002-11-12   11:49:42,866   SELECT   *   FROM   Role   WHERE   1=1   order   by   createDate   desc  
   
  例子2:显示日期,log发生地方和log信息  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss,SSS}   %l   "#"   %m%n  
  2002-11-12   11:51:46,313   cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)   "#"   SELECT   *   FROM   Role   WHERE   1=1   order   by   createDate   desc    
   
  例子3:显示log级别,时间,调用方法,log信息  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=[%-5p]   %d{yyyy-MM-dd   HH:mm:ss,SSS}   method:%l%n%m%n  
  log信息:  
  [DEBUG]   2002-11-12   12:00:57,376   method:cn.net.unet.weboa.system.dao.RoleDAO.select(RoleDAO.java:409)  
  SELECT   *   FROM   Role   WHERE   1=1   order   by   createDate   desc    
   
  PART   3   log4j的使用  
  log4j使用步骤有3个:  
  3.1.根据配置文件初始化log4j  
  配置文件如PART   2所叙述。现在讲的是如何在程序中配置log4j。  
  log4j可以使用3中配置器来初始化:BasicConfigurator,DOMConfigurator,PropertyConfigurator  
  这里用的是PropertyConfigurator。使用PropertyConfigurator适用于所有的系统。  
  如下的语句  
  PropertyConfigurator.configure("log4j.properties");  
  就以log4j.properties为配置文件初始化好了log4j环境。  
  注意一点:这个语句只需要在系统启动的时候执行一次。例如:在unet   webOA项目中可以这么用:  
  在ActionServlet的init()方法中调用一次。  
  public   class   ActionServlet   extends   HttpServlet{  
  ...  
  /**  
  *   Initialize   global   variables  
  */  
  public   void   init()   throws   ServletException   {  
  //   初始化Action资源  
  try{  
  initLog4j();  
  ...  
  }catch(IOException   e){  
  throw   new   ServletException("Load   ActionRes   is   Error");  
  }  
  }  
  ...  
  protected   void   initLog4j(){  
  PropertyConfigurator.configure("log4j.properties");  
  }  
  ...  
  }//end   class   ActionServlet  
   
  3.2   在需要使用log4j的地方获取Logger实例  
  如下是RoleDAO类中的使用例子:  
  static   Logger   log   =   Logger.getLogger("DAO");  
  注意这里使用"DAO"标识符,那么对应的在配置文件中对应的配置信息如下:  
   
  #定义DAO   Logger  
  log4j.logger.DAO=DEBUG,A2  
  #设置Appender   A2的属性  
  log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender  
  log4j.appender.A2.file=demo  
  log4j.appender.A2.DatePattern='.'yyyy-MM-dd  
  log4j.appender.A2.layout=org.apache.log4j.PatternLayout  
  log4j.appender.A2.layout.ConversionPattern=%-5p   %d{yyyy-MM-dd   HH:mm:ss}   %l%n%m%n  
   
  public   class   RoleDAO   extends   BaseDBObject  
  {  
  ...  
  static   Logger   log   =   Logger.getLogger("DAO");  
  ...  
  public   BeanCollection   selectAll()   throws   SQLException  
  {  
  StringBuffer   sql   =   new   StringBuffer(SQLBUF_LEN);  
  sql.append("SELECT   *   FROM   "   +   tableName   +   "   order   by   roldId");  
  //System.out.println(sql.toString());  
  log.debug(sql);  
  ...  
  }  
  ...  
  }  
   
  3.3   使用Logger对象的debug,info,fatal...方法  
  log.debug("it   is   the   debug   info");  
   
  附件1:log4j的一个bug  
  当这样使用时,DailyRollingFileAppender不能正确使用:  
  public   Class   RoleDAO(){  
   
  static   Logger   log   =   Logger.getLogger("DAO");  
   
  //在每一次new   RoleDAO对象的时候都执行一次configure()操作  
  public   RoleDAO(TransactionManager   transMgr)   throws   SQLException  
  {  
  ...  
  PropertyConfigurator.configure("log4j.properties");  
  ...  
  }  
   
  public   void   select(){  
  ...  
  //使用log4j进行log记录  
  log.debug("...");  
  ...  
  }  
  }  
  怎么解决:  
  在系统启动时执行一次PropertyConfigurator.configure("log4j.properties");  
  之后就不再执行。
分享到:
评论

相关推荐

    log4j入门、详解

    本篇文章将深入探讨Log4j的入门知识和核心特性。 ### 1. Log4j简介 Log4j是基于Java的日志框架,最初由Ceki Gülcü设计,旨在提供灵活且高效的日志记录解决方案。Log4j提供了丰富的配置选项,可以控制日志信息的...

    log4j入门详解

    ### Log4j入门详解 #### 1. Log4j简介 Log4j是Apache软件基金会下的一个开源项目,它提供了一种强大且灵活的方式来管理和控制应用程序的日志记录。相较于简单的打印语句,Log4j提供了更为高级的功能,比如能够根据...

    Log4j 入门到详解[推荐].pdf

    ### Log4j从入门到详解知识点汇总 #### 1. Log4j简介 Log4j是Apache的一个开源项目,主要用于实现日志记录功能。通过使用Log4j,开发者可以非常方便地控制日志信息的输出目的地(如控制台、文件等)、每条日志的...

    log4j入门到详解.pdf

    log4j入门到详解.pdf。。。

    log4j入门、详解.pdf

    ### Log4j 入门与详解 #### 一、Log4j简介 Log4j是Apache组织提供的一个开源日志框架,它可以帮助开发者轻松地在应用程序中实现日志记录功能。传统的日志记录方式通常是在代码中直接使用`System.out.println()`等...

    log4j从入门到精通(附jar文件)

    ### Log4j从入门到精通知识点详述 #### 1. Log4j简介 Log4j 是 Apache 软件基金会旗下的一个开源项目,它是一个用于 Java 的日志记录工具。通过使用 Log4j,开发者可以轻松地在 Java 应用程序中实现日志功能,不仅...

    springboot整合log4j入门程序

    # springboot整合log4j入门程序## 1. 环境springboot 1.3.8.RELEASE + spring-boot-starter-log4j + jdk8## 2. 源码说明:- SpringBoot只有1.3和1.3.x以下版本才支持log4j,1.3.x以上版本只支持log4j2(对于log4j来...

    log4j 入门程序

    **Log4j 入门程序详解** Log4j 是 Apache 提供的一款强大的日志记录工具,广泛应用于 Java 开发环境中。它提供了灵活的日志配置,允许开发者根据需求选择不同的输出级别,如DEBUG、INFO、WARN、ERROR 和 FATAL,...

    Log4j入门学习笔记

    【Log4j入门学习笔记】 Log4j是一个广泛使用的Java日志框架,旨在解决程序开发中日志记录的复杂性和可维护性问题。它提供了一种灵活的方式来控制日志信息的输出格式、输出级别和输出位置,使得在调试、监控和故障...

    log4j从入门到详解

    ### log4j从入门到详解 #### 1. Log4j简介 Log4j是一款由Apache组织提供的开源日志组件,被广泛应用于Java应用程序中。它可以帮助开发者在应用程序中记录日志信息,这对于调试程序、追踪错误以及进行系统监控等...

    Log4j教程

    **四、Log4j与其他日志框架的比较** Log4j在Java日志领域有很高的市场份额,但它并非唯一的选择。其他常见的日志框架包括Logback(由Log4j的作者设计的替代品)和Java Util Logging (JUL)。Log4j因其丰富的功能集、...

    log4J最简单入门

    ### Log4J 最简入门详解 #### 一、Log4J简介与基本概念 Log4J是一款非常流行的Java日志框架,由Apache软件基金会提供。它可以帮助开发者在应用程序中记录日志信息,这对于调试和维护应用程序来说至关重要。本文将...

    log4j快速入门与精通

    ### Log4j快速入门与精通知识点详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,用于 Java 应用程序的日志记录。它提供了一个灵活的日志记录框架,允许开发者根据需求定制日志级别、输出目标等配置。Log...

    log4j2用户指南

    ### Log4j2 用户指南知识点概述 #### 1.1 欢迎使用 Log4j2! ##### 1.1.1 引言 几乎每一个大型应用都有自己的日志或跟踪 API。根据这一规则,E.U.SEMPER 项目决定在 1996 年初开发自己的追踪 API。经过无数次的...

    (zt)Commons-logging + Log4j 入门指南

    《Commons-Logging + Log4j 入门指南》 在Java编程中,日志记录是必不可少的一部分,它有助于调试、性能分析以及故障排查。Apache Commons Logging和Log4j是两个广泛使用的日志框架,本指南将深入讲解如何将它们...

    log4j 入门

    1. **添加Log4j库**:将log4j.jar文件放入项目的类路径中。 2. **编写配置文件**:创建名为log4j.properties的配置文件,定义logger、appender和layout的设置。 在`log4j.properties`配置文件中,你可以指定root ...

    Log4j入门实例Log4j入门实例

    本文将深入探讨Log4j的基础知识、配置和使用实例,帮助初学者快速入门。 首先,理解Log4j的核心概念至关重要。Log4j主要由三部分组成:Logger(日志器)、Appender(输出端)和Layout(布局)。Logger用于记录日志...

    log4j入门介绍和配置方式

    Log4j 入门介绍和配置方式 Log4j 是一个流行的 Java 日志记录工具,能够帮助开发人员调试和分析程序。下面是 Log4j 的基本概念和配置方式。 一、Log4j 概念 Log4j 中有三个主要的组件:Logger、Appender 和 ...

Global site tag (gtag.js) - Google Analytics