`
robinjoe
  • 浏览: 44893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

log4j入门教程(二)

阅读更多

Log4j的简单思想
    Log4j真的很简单,简单到令人发指的地步。不是要记录日志吗?那就给你一个Log,然后用Log来写东西就行了,先来一个完整类示例:

package test.robin;      
     
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();      
        }      
} 

 

 

      我们从这个例子说起,先不要着急,很快就豁然开朗了。

     Log4j默认把日志信息分为五个等级:
     all<debug < info < warn < error < fatal<off

     虽然可以自己添加等级,但是我觉得没有必要,五个够用了吧!你要写入信息的时候就把信息归为五个等级中的一个,然后调用相应的函数即可。分五个等级到底有什么用呢?日志信息到底写到哪里去了?LogFactory.getLog(Test.class)又是什么意思捏?接着往下看吧!(现在用这个Logger.getLogger(Test.class)或者Logger.getLogger(InitDicDao.class.getName()) )

继承思想:
    Log4j的关键之处在于它的继承思想。也就是一个Log可以继承另外一个Log的属性(输出到哪里,日志等级,日志格式等等)。怎么继承?
    Log4j是根据Log
的名字来判断继承关系的,比如:
    名字为“com.robin.lib”的Log就是“com.robin.lib.log”的parent,明白了吧!Log4j还有一个rootLogger,相当于JavaObjectLog4J中总是存在一个rootLogger,即使没有显示配置也是存在的,并且默认输出级别为DEBUG其它的logger都继承自这个rootLogger(如果其他logger未单独定义其输出级别)了解Log4j的继承思想对学习Log4j很重要。

 

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

     那具体的Log属性是在哪里定义的呢?
    我们可以认为
Logger.getLogger(Test.class)就是静态方法获取一个loger实例,这个实例的相关信息就是我们在配置文件里配置好的logger。(xml文件的logger标签)
    每次我们在系统中取得logger时,并不是新建实例,这些实例是系统启动的时候就按照配置文件初始化好的(也可能时第一次引用的时候建立的,然后缓存其实例供以后使用,这部分还没有时间研究)。

关于logger的两点说明:

·     用同名参数调用Logger.getLogger(String name)将返回同一个logger的引用。故可以在一个地方配置logger,在另外一个地方获得配置好的logger,而无须相互间传递logger的引用。

·     logger的创建可以按照任意的顺序,即,父logger可以后于子logger被创建。log4j将自动维护logger的继承树。

  

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

 

默认的log4j初始化过程:

    Logger类的静态初始化块(static initialization block)中对log4j的环境做默认的初始化。注意:如果程序员已经通过设置系统属性的方法来配置了log4j环境,则不需要再显式地调用XXXConfigurator.configure()方法来配置log4j环境了。

Logger的静态初始化块在完成初始化过程时将检查一系列log4j定义的系统属性。它所做的事情如下:

  • 检查系统属性log4j.defaultInitOverride,如果该属性被设置为false,则执行初始化;否则(只要不是false,无论是什么值,甚至没有值,都是否则),跳过初始化。
  • 把系统属性log4j.configuration的值赋给变量resource。如果该系统变量没有被定义,则把resource赋值为"log4j.properties"。注意:在apache的log4j文档中建议使用定义log4j.configuration系统属性的方法来设置默认的初始化文件是一个好方法。
  • 试图把resource变量转化成为一个URL对象url。如果一般的转化方法行不通,就调用org.apache.log4j.helpers.Loader.getResource(resource, Logger.class)方法来完成转化。
  • 如果url以".xml"结尾,则调用方法DOMConfigurator.configure(url)来完成初始化;否则,则调用方法PropertyConfigurator.configure(url)来完成初始化。如果url指定的资源不能被获得,则跳出初始化过程。

 

 

整理自: http://www.cnblogs.com/Fskjb/archive/2011/01/29/1947592.html
            http://xiaotot.blog.163.com/blog/static/1054650672009428111323294/
            http://zhangjunhd.blog.51cto.com/113473/21014 

 

 

 

 

分享到:
评论

相关推荐

    log4j入门教程.docx

    log4j入门教程 Log4j是一个开源的日志记录组件,其产品已经相当的成熟,且使用非常的广泛。在工程中以易用,方便等代替了 System.out 等打印语句。 Log4j的目标是:它允许开发人员以任意的精细程度控制哪些日志说明...

    log4j配置详解 新手入门教程

    介绍log4j属性配置 可以让你快速上手 介绍log4j属性配置 可以让你快速上手

    最详细的Log4j使用教程

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

    Log4j入门指南入门教程

    个人收藏的Log4j教程,有需要的可以收藏了

    日志框架log4j和slf4j入门教程(私塾在线)视频配套学习资料

    日志框架log4j和slf4j入门教程(私塾在线)视频配套学习资料

    log4J最简单入门

    很经典的一个入门教程!里面的内容是log4J的基本入门配置!希望对大伙有帮助哦!!!

    log4j学习入门

    log4j入门教程,朋友编写的,看了基本就会使用log4j了

    Log4j教程

    NULL 博文链接:https://samsongbest.iteye.com/blog/1206622

    log4j入门与精通教程

    程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和...log4j提供分级方法在程序中嵌入日志记录语句。日志信息具有多种输出格式和多个输出级别。

    Log4j新手快速入门教程

    主要给大家介绍了关于Log4j新手入门的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Log4j具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    java代码实例-日志规范史上最全java日志攻略(附教程)

    Log4J "Log4J的入门使用 Log4j的配置 输出日志文件 将日志信息存入数据库" Apache JCL "common log介绍 log中的接口" SLF4J "日志门面的使用 日志的绑定 日志的桥接 日志门面的原理" log-back "log-back的日志框架 ...

    java日志框架视频教程

    Log4j组件解析3. Layout格式4. Appender输出5. 自定义Logger章节四:JCL1. 快速入门2. 原理解析章节五:Slf4j1. 快速入门2. 绑定日志实现3. 桥接旧日志实现4. 原理解析章节六:Logback1. 快速入门2. 配置文件3. ...

    SSH入门实战式课程 SSH框架前言全套视频实战精讲视频教程.txt

    │ 北京动力节点SSH前言-017-Log4j-日志的用途及Log4j.mp4 │ 北京动力节点SSH前言-018-Log4j-日志基础.mp4 │ 北京动力节点SSH前言-019-Log4j-Log4j用法.mp4 │ 北京动力节点SSH前言-020-Log4j-Log4j2用法.mp4 │ ...

    Java进阶课程日志框架视频教程

    --11-Log4j的快速入门.mp4 --12-Log4j的组件和配置文件介绍.mp4 --13-Log4j的内置日志记录.mp4 --14-Log4j的layout配置.mp4 --15-Log4j的FileAppender配置.mp4 --16-Log4j的JDBCAppender配置.mp4 --17-Log4j的自定义...

    java二八杠源码-solo:我们构建一个Web应用程序的教程,该应用程序可让您在运行时控制log4j记录器

    java二八杠源码 从零到英雄 这是一个 Clojure / ClojureScript 教程。 我们将构建一个应用程序( Solo [1]),让您在运行时控制 log4j ...背景的人准备的入门教程。 它不会解释/教授 Clojure(您可以

    JUnit 入门教程

    Log4j 是一个使用 Java 语言编写的,可靠、快速、灵活的日志框架(API),使用 Apache Software License授权。Log4j 是一个使用 Java 语言编写的流行类库,它被移植到 C、C++、C#、Perl、Python、Ruby 和 Eiffel ...

    flink入门到精通视频教程

    02.入门案例-构建工程、log4j.properties 03.入门案例-代码运行yarn模式运行 04.DataSource-基于集合 05.DataSource-基于文件 06.Transformation开发 07.Datasink-基于集合 08.Datasink-基于文件 09.执行模式-本地...

    应用分析监控平台 闪电狗.zip

    先配置将tomcat日志输出到log4j,下载tomcat-juli.jar到tomcat/bin,覆盖原来的jar,下载tomcat-util.jar到tomcat/lib,复制log4mongo-java ,flash-dog-api-log4j 和 mongo-java-driver ,log4j.properties到lib 2....

    廖雪峰 Java 教程.doc

    使用Log4j 使用SLF4J和Logback 反射 Class类 访问字段 调用方法 调用构造方法 获取继承关系 动态代理 注解 使用注解 定义注解 处理注解 泛型 什么是泛型 使用泛型 编写泛型 擦拭法 extends通配符 ...

    免费下载:自己整理的java学习资料

    log4j使用教程.txt struts_action.txt struts标签.chm swing02.doc Tomcat.chm webAndXml.pdf 正则表达式.chm 网页常用的jsp 脚本.doc JSF入门简体中文版 struts标签中文 config 设计模式:Java语言中的应用.pdf ...

Global site tag (gtag.js) - Google Analytics