`

Log4j入门学习

阅读更多
内容转自多篇文章:
http://afront.bokee.com/6157060.html
http://blog.csdn.net/lcazxc/archive/2007/06/01/1634743.aspx

一般情况下 Log4j 总是和 Apache Commons-logging 一起用的。
一、Log4j的简单思想
Log4j真的很简单,简单到令人发指的地步。不是要记录日志吗?那就给你一个Log,然后你用Log来写东西就行了,先来一个完整类示例:
举个例子

package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class Test {
        static Log log = LogFactory.getLog (Test. class );
        public void log(){
           log .debug( "Debug info." );
           log .info( "Info info" );
           log .warn( "Warn info" );
           log .error( "Error info" );
           log .fatal( "Fatal info" );
        } 
        public static void main(String[] args) {

           Test test = new Test();

           test.log();

        }

}


ps:要想运行这个程序,需要先部署,详见第三点,在下面

别怕,看完这篇文章你就会觉得很简单了。
Log4j 默认把日志信息分为五个等级(日志可以分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL七个等级)
       debug < info < warn < error < fatal

虽然可以自己添加等级,但是我觉得没有必要,五个够用了吧!你要写入信息的时候就把信息归为五个等级中的一个,然后调用相应的函数即可。

       分五个等级到底有什么用呢?日志信息到底写到哪里去了?

       “ LogFactory.getLog (Test. class ) ”又是什么意思捏?接着往下看吧!


Log4j 的关键之处在于它的继承思想。也就是一个 Log 可以继承另外一个 Log 的属性(输出到哪里,日志等级,日志格式等等)。怎么继承?

Log4j 是根据 Log 的名字来判断继承关系的,比如:

名字为“ com.zhlmmc.lib ”的 Log 就是“ com.zhlmmc.lib.log ”的 parent ,明白了吧! Log4j 还有一个 rootLogger ,相当于 Java 的 Object 。

回过头来看“ LogFactory.getLog (Test. class ) ”这里的“ Test. class ”事实上传进去的是 Test 这个类的完整路径(包名 + 类名),“ test.Test ”。这样如果存在“ test ”这个 Log 那么 Test 这个 Log 就继承它,否则就继承 rootLogger 。


       那具体的 Log 属性是在哪里定义的呢?


二、常见的配置文件

虽然可以用 xml 或者在运行时用 Java 来配置 Log4j ,但还是 properties 文件好用啊!

log4j.rootLogger= info, stdout

log4j.appender.stdout= org.apache.log4j.ConsoleAppender

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

# Pattern to output the caller's file name and line number.

log4j.appender.stdout.layout.ConversionPattern= %5p [%t] (%F : %L) - %m%n

分析一下:

第一行,配置 log4j.rootLogger 你明白吧。应为它是根,总得配置一下,否则别的 Log 继承什么啊。其他的 Log 可以配置也可以不配置。等号后面的第一个参数表示日志级别,可以填五个级别中的一种,后面的参数都是让 Log 知道输出到哪里,如果你想让日志输出到两个地方就加两个输出参数,比如:

log4j.rootLogger= info, stdout, file

这里的 info 表示,该 Log 的日志级别为 info ,所有级别小于 info 的日志都不会被记录。比如使用这个配置文件的话,我刚开始举的那个类中

log .debug( "Debug info." );

这句话是不起作用的,因为 debug 的级别小于 info 。这样就很容易控制什么信息在调试的时候要显示,什么信息在发布的时候要去掉。这些都不用改代码,很方便吧。

     

但, stdout 和 file 又是什么呢?

接着往下看,就是配置 stdout 了,这个名字是随便取的,你可以叫它 A :

log4j.appender.A= org.apache.log4j.ConsoleAppender

那么上面的 rootLogger 的参数 stdout 也要改成 A ,其他用到的地方当然也要改。这里的关键不是名字,而是 appender 类型,比如这里的“ ConsoleAppender ”,看明白了吧,输出到 Console 。后面两行都是设置日志格式的,一般情况下你就照抄吧。既然是最简入门关注于理解 Log4j 的工作原理,我就不介绍 file 类型的 appender 了,一搜一大把。


在实际的项目开发中,很可能遇到所引用的包用 Log4j 来记录日志,比如 Hibernate 。那么在这里你可以很容易的控制这个包如何记录日志。比如在上面的配置文件中加一行:

log4j.logger.org.hibernate= fatal

       那么所有 org.hibernate 包下面的类就只会显示很少的信息,因为 fatal 的级别最高啊。

下面写一个配置实例:
第一步、下载log4j-1.2.14.jar文件包,放入lib目录下。
第二步、写配置文件log4j.properties
#指定根Logger,及日志输出级别,大于等于该级别的日志将被输出( DEBUG < INFO < WARN < ERROR < FATAL ) 设为OFF可以关闭日志
log4j.rootLogger=DEBUG, A1,A2
#指定log输出目的,这里设为输出日志到指定目录的文件my.log中
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=d:\\my.log
#指定日志信息的格式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%r %d{yyyy-MM-dd HH:mm:ss} %c %p -%m%n
#把A2输出到控制台
log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.SimpleLayout
#还可以单独指定输出某个包的日志级别
#log4j.logger.com.study.HelloLog4j=INFO
第三步、编写log4j类:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator ;
public class Log4j {
 
 static public Logger logger=Logger.getLogger(Log4j.class.getClass());
   
  public Log4j()
  {
   
   //使用配置文件来配置Log4j
      PropertyConfigurator.configure ( "D:\\workspace\\addressbook1\\WebRoot\\WEB-INF\\log4j.properties" ) ;
   //插入日志信息
      logger.info("HelloLog4j开始执行");
  }
  public Logger getlog(){return Log4j.logger;}
}

第四部、在程序中调用
Log4j log=new Log4j();
  log.getlog().info("this is in action");



三、部署

别怕,这可不是部署 Tomcat 。把 log4j 的包和 commons-logging 的包(加在一起才两个)放到 classpath 下面。然后把配置文件保存为 log4j.properties ,也放在 classpath 下面(如果用 Eclipse 的话,放在 src 目录下即可)。然后你就可以跑了。


分享到:
评论

相关推荐

    Log4j入门学习笔记

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

    log4j学习

    Log4j学习涵盖的内容广泛,从基础的配置和使用,到高级的源码分析和性能优化。通过学习Log4j,开发者能够更好地监控和调试程序,提升问题定位效率,同时也能理解日志管理在软件开发中的重要性。文件“log4jTest”...

    log4j入门详解

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

    log4J最简单入门

    ### Log4J 最简入门详解 #### 一、Log4J简介与基本概念 Log4J是一款非常流行的Java日志框架,由Apache...通过学习这些基础内容,开发者可以轻松地在自己的项目中集成Log4J,从而更好地管理和调试应用程序的日志信息。

    log4j简单使用

    标题"Log4j简单使用"表明我们即将探讨的是日志记录库Log4j的基础应用。Log4j是Apache软件基金会开发的一个开源项目,它为Java应用程序提供了一个灵活的日志系统,允许开发者自定义日志级别、输出格式以及存储位置等...

    The Complete Log4j Manual

    通常,一本完整的手册会包括以下几个部分:介绍Log4j的基础知识、详细说明如何配置和使用Log4j、示例和最佳实践、高级配置技巧、性能优化建议、以及Log4j的二次开发等方面内容。读者可以根据个人需要,找到对应章节...

    java学习log4j详细文档和入门工程

    **Java学习Log4j详细文档和入门工程** 在Java编程中,日志记录是一个至关重要的环节,它能够帮助开发者跟踪程序运行状态,定位错误和异常,优化性能。Log4j是Apache组织提供的一款广泛使用的开源日志框架,适用于...

    log4j从入门到详解

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

    log4j测试程序

    "log4j入门程序,免费下载。需要log4j-1.2.15.jar" 描述了这个程序是初学者学习Log4j的入门示例,用户可以免费下载。"log4j-1.2.15.jar" 是Log4j的一个特定版本,表明该程序依赖于这个版本的库文件来运行。这个版本...

    log4j实例,log4j-1.2.9.jar

    在标题“log4j实例,log4j-1.2.9.jar”中,我们看到的是Log4j的一个具体版本——1.2.9。这个版本虽然相对较旧,但它仍然是许多现有项目的基础,因为它稳定且功能齐全。 **1. Log4j的核心组件** Log4j由三个主要...

    log4j学习入门

    ### log4j学习入门知识点详解 #### 一、Log4j简介 Log4j是一款开源的日志框架,由Apache组织提供。它可以帮助开发者轻松地在应用程序中添加日志功能,从而便于追踪应用程序的状态和行为。Log4j的主要优势在于其...

    Log4j学习笔记和一套完整定义实例

    **Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录框架,由Apache软件基金会开发。它提供了一套灵活的日志记录系统,帮助开发者在开发过程中追踪应用程序的行为,便于调试、性能分析和问题排查。Log4j...

    Log4j整理的3个学习文档

    总之,这三个文档将全面覆盖Log4j的基础知识、高级特性和API使用,对于任何想要深入学习和使用Log4j的Java开发者来说,都是宝贵的参考资料。通过学习和实践,你可以更加自如地驾驭日志这一强大的工具,提升你的开发...

    log4j的eclipse工程,最简单最直接的方式配置log4j

    **标题与描述解析** ...总的来说,这个Eclipse工程提供了一个快速上手log4j的平台,通过学习和实践其中的代码,开发者可以更好地理解和掌握log4j的配置与使用,提升日志管理效率,从而优化开发过程。

    log4j注释文档

    除了上述基础配置外,log4j还支持更多高级功能,例如滚动文件输出、邮件通知等。这些特性可以通过增加额外的Appender实现。 #### 六、总结 通过本文档的学习,我们了解了log4j配置文件的基本结构和关键配置项的...

    apache-log4j-2.0-rc1-src

    **Log4j基础知识:** 1. **日志级别**:Log4j支持多个日志级别,如DEBUG、INFO、WARN、ERROR、FATAL以及OFF,允许开发者根据需要调整日志输出的详细程度。 2. **配置文件**:Log4j使用配置文件(如log4j2.xml或log4j...

    log4j中文手册(中文版)

    ### log4j中文手册知识点概览 ...综上所述,`log4j`是一款强大且灵活的日志记录工具,通过上述知识点的学习,我们不仅可以快速掌握其基础使用方法,还能深入理解其内部机制,更好地应用于实际项目中。

    log4j 入门程序

    通过这个入门程序,我们可以学习到如何配置 Log4j,创建 logger,设置输出级别,以及如何记录不同级别的日志信息。在实际项目中,Log4j 可以帮助我们更好地追踪程序运行状态,定位错误,提高开发效率。随着对 Log4j ...

    log4j日志打印demo

    **正文** 日志系统在软件开发中扮演着至关重要的角色,它可以帮助开发者追踪程序...在"log4j日志打印demo"中,你将学习到如何设置Log4j以实现控制台和SD卡(针对Android)的日志输出,从而在实际开发中更加得心应手。

Global site tag (gtag.js) - Google Analytics