`
piperzero
  • 浏览: 3477763 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

LOG4J原理以及配置的研究

 
阅读更多

在进行Log4J的使用过程中,我对下面的两个问题比较敏感:

1、Log4J是如何进行工作的?

这是在Log4J项目中对Log4J的介绍中的一段话

With log4j it is possible to enable logging at runtime without modifying the application binary. The log4j package is designed so that these statements can remain in shipped code without incurring a heavy performance cost. Logging behavior can be controlled by editing a configuration file, without touching the application binary.

对于Log4J的具体如何进行工作的原理,在javaeye上buaawhl给出了一个解释:

http://buaawhl.javaeye.com/blog/6450

总结一下就是利用JDK提供的new Throwable().getStackTrace()方法返回当前运行栈的结构层次,然后对返回的调用栈的信息进行分析,找到调用该类的类的名称。(也就是Log4J自己说的Runtime期间实现Log)

由于在Log4J中只存在一个根Logger,并且Logger之间存在继承的关系,并且我们可以在配置文件(log4J.proerties或者XML)中进行配置,可以初始化指定的Logger,并且对指定的Logger进行一些相关的配置,如设置如何进行输出,以及如何将输出进行布局。并且由于Logger之间会存在继承的关系(会找一个最近的Logger进行继承,如果没有就以根Logger作为父类,共享父类的配置信息),以及父子类之间初始化没有先后的顺序,所以我们可以在配置文件中,对各个程序以及不同的包中使用到Log4j的Log纪录方式进行配置。

如果在同一个APPLICATION对相同名称的Logger进行调用,那么只会返回一个Logger实例。

2、Log4J会不会对系统的性能造成大的影响?

这是对Log4J性能的一些描述,看来还是不错的,呵呵,在调整一下Log的等级就可以了。

On an AMD Duron clocked at 800Mhz running JDK 1.3.1, it costs about 5 nanoseconds to determine if a logging statement should be logged or not. Actual logging is also quite fast, ranging from 21 microseconds using the SimpleLayout, 37 microseconds using the TTCCLayout. The performance of the PatternLayout is almost as good as the dedicated layouts, except that it is much more flexible.

注:对于Common Logging和Log4J的关系可以参见(其实JCL是一个规范,对一些Log工具进行了包装,我们常会使用到的具体实现还是Log4j,当然也可以使用其他的实现)

http://hedong.3322.org/archives/000316.html

参考资料:

http://www-128.ibm.com/developerworks/cn/java/l-log4j/index.html使用Log4J进行日志操作

http://zooo.51.net/heavyz_cs/notebook/log4j.htmlLog4J学习笔记(推荐)

http://www.dingl.com/view.shtml?xh=485log4j配置

http://hedong.3322.org/archives/000193.html竹笋炒肉的Log4J学习笔记

http://forum.springside.org.cn/redirect.php?fid=3&tid=382&goto=nextoldsetSpringSide对Log4j的使用要点

分享到:
评论

相关推荐

    Log4j简介 介绍log4j的原理和用法

    log4j的使用习惯,让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息 ,使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。注意:在一...

    Log4j日志管理系统简单使用说明

     以上是从原理方面说明Log4j的使用方法,在具体Java编程使用Log4j可以参照以下示例:    1、 建立Logger实例:  语法表示:public static Logger getLogger( String name)  实际使用:static Logger logger = ...

    Struts2 日志原理及配置方法(结合Log4j)

    NULL 博文链接:https://adrain-work-163-com.iteye.com/blog/1545091

    log4j配置方法和实例

    log4j.properties的具体配置方法和实例,其中有我自己总接的方法和下载的原理TXT文档,以及我自己写的实例,初学者还是可以参考的

    log4j2 自动删除过期日志文件的配置及实现原理

    主要介绍了log4j2 自动删除过期日志文件配置及实现原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    log4j The Complete Manual (2002)

    一本全面介绍log4j原理,配置,使用的书。

    log4j教程与手册

    log4j是Java的日志系统,此教程与手册讲述了log4j的原理、其包含的组件及配置,还包含log4j_api(可快速查找到你需要的信息)

    Log4简明手册(配置)

    本文主要描述Log4j的API的唯一特性和它的设计原理。Log4j是一个基于许多作者的开放源码的项目。它允许开发员以任意的间隔来控制日志的输出。它通过设在外部的配置文件而达到运行时灵活的设置。最重要的是,Log4j有一...

    Log4j中文文档API

    这篇文章描述了Log4j的API、独一无二的特色和设计原理。Log4j是一个聚集了许多作者劳动成果的开源软件项目。它允许开发人眼以任意的粒度输出日志描述信息。它利用外部的配置文件,在运行时是完全可配置的。最厉害的...

    log4j帮助文档与使用手册

    这个文档资料描述了log4j API,它的独特的特性和设计原理。Log4j是由许多作者共同参与的开放源代码项目。它允许开发人员以任意的精细程度控制哪些日志说明被输出。通过使用外部的配置文件,可以在运行时配置它。最好...

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

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

    weblogic,log4j,druid,hibernate,spring,struts2连接泄露检测

    weblogic,log4j,druid,hibernate,spring,struts2,hutoolDb,Oracle连接池配置,连接泄露检测及简要原理说明 连接关了关,怎么用druid检测

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

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

    java日志框架视频教程

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

    Spring Boot实战与原理分析视频课程包含14-18

    --演示了如何在Spring Boot里面使用日志配置,以及logback,log4j2等日志的使用 23 Spring Boot 监控和度量47:09 --Spring Boot内置的监控点、自定义的监控状况检查、自定义度量统计,输出等等 24 Spring Boot ...

    R2数据库连接池运用jdk1.6特性的高性能全参数化配置连接池

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。 ...

    应用分析监控平台 闪电狗.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....

    R2 v1.2源码

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。...

    数据库系统原理课程设计,基于 SSM 框架的医院药品库存管理系统+源代码+文档说明

    - [X] [2.7 配置 log4j](#配置-log4j) - [X] [2.8 集成基于 Bootstrap 前端框架的 ACE 管理系统页面模板](#集成基于-Bootstrap-前端框架的-ACE-管理系统页面模板) - [X] [2.9 导入 Apache Taglibs 的 ja ------...

    R2数据库连接池高性能连接池v1.2

    本包需要用到log4j,请在调用时确保存在log4j的jar包。 单池调用方式为Connection conn = R2PoolUtil.getStaticPool().getConnection(); conn用完后必须关闭,不然池中连接会被用完(原理:关闭conn时放回池中)。...

Global site tag (gtag.js) - Google Analytics