`
dongdong9223
  • 浏览: 3067 次
社区版块
存档分类
最新评论

日志二人转-Log4j与JCL小探

阅读更多
    工作中系统出了问题,当需要检查错误来源时才发现系统日志记录非常不规范,很多问题没有合理的记下来,给后续排错带来麻烦。看了一下相关的日志体系,主要还是Log4jJCL(Apache Commons Logging)的使用信息。
    Log4j是Apache软件基金会的一个子项目,也是Apache Logging项目的一部分(现在Log4j 2的Beta版本也已经出来了)。用《The Practice of Programming》作者Brian W. Kernighan和Rob Pike两位大师的话来说,用步步跟踪的debug方式太容易迷失在复杂数据结构的细节中了,而且效率也低,比较而言,想想往哪输出日志语句总比一步步的单步跟踪关键代码省事儿的多吧。Log4j就是希望建立起简单易用的日志体系。
    整个Log4j项目分为三部分:loggers, appenders and layouts,及日志机,附着器,以及日志格式。日志记录的过程就像一个旅行队要出发远行,loggers就是旅行队的队员,appenders就是记录行程情况的随行记者,而layouts就好比记者使用的书法形体(想想用草书写成的后果吧)。Loggers最大的特点就是其本身的层次体系,或者说是继承关系。每个logger都有一个用点号分隔的名字,名字结构较短的logger被看做是名字结构较长logger的祖先。比如被命名为“com.foo”的logger就是名为“com.foo.Bar”logger的祖先。继承关系有什么用呢?原来每个logger都可能被分配一个记录等级,包括:TRACE,DEBUG,INFO,WARN,ERROR和FATAL,并且等级依次升高,而日志的记录也是通过这几个等级的同名方法来记录的。当一个logger没有被分配等级时,它会从离它最近的祖先那里继承等级过来,继承关系向着最顶层的root logger进行。对于一个有了具体等级的logger来说,系统将只会将那些大于等于当前等级的日志操作记录下来,比如有:
//定义logger
Logger  logger = Logger.getLogger("com.foo");
//设置等级为INFO
logger.setLevel(Level.INFO);

那么以下操作:
logger.trace("TRACE level.");
logger.debug("DEBUG level.");
logger.info("INFO level.");
logger.warn("WARN level.");
logger.error("ERROR level.");
logger.fatal("FATAL level.");

    将只有logger.info("INFO level.")及以后的语句会被我们的随行记者appenders成功记录下来,这也是Log4j的优势所在,在代码里嵌入不同等级的日志信息,通过改变日志等级来达到查看不同等级信息的作用。在项目开发中可以在配置文件Log4j.properties中设置设置等级为DEBUG,则日志中会记录调试及以上等级的信息,交付生产环境后,就可以改设INFO等级,减少不必要的数据,系统出现问题又可以重调为DEBUG等级。
    而我们的随行记者appender一般都被安排在Log4j.properties中进行设置。
    再来说说JCL(Apache Commons Logging)。这款日志组件同样出自——当当当当——我们的Apache,来自于Apache Commons组件,Commons是Apache关注多角度可重用组件的一个项目。JCL既是一款轻量级的日志组件,同时也是服务于其他日志套件的独立抽象组件。说白了,就是提供统一的接口,而使用其它组件的实现。怎么样,有气魄吧,有点秦始皇横扫六国一统天下的野心。当然目前还是主要给Log4j、Avalon LogKit、JDK1.4的日志工具等,而其中最主要的还是给闻名于Java江湖的Log4j做代言啦!由此可见名人与广告的引力是双向的,即使再牛的品牌,即使付出再多的代价,也会向更牛的名人抛出橄榄枝的。为了唱好日志体系这场引人瞩目的二人转,同时也是给名人提供一套光鲜艳丽的出场服装,更是为了体现强强联手的霸气,JCL还专门在自己的User Guide中拿出一块篇幅特别说明了自己对Log4j的支持。本来JCL的配置文件是commons-logging.properties,为了支持Log4j,可以在配置文件中说明Log4j配置文件的信息:
    log4j.configuration=log4j.properties
    之后还加上一句:如果不指定,默认就是log4j.properties。基本就是在展示蜜月照了。
分享到:
评论

相关推荐

    log4j.jar各个版本

    log4j-jcl-2.0.2-javadoc.jar, log4j-jcl-2.0.2-sources.jar, log4j-jcl-2.0.2.jar, log4j-jmx-gui-2.0.2-javadoc.jar, log4j-jmx-gui-2.0.2-sources.jar, log4j-jmx-gui-2.0.2.jar, log4j-nosql-2.0.2-javadoc.jar,...

    最新slf4j-1.7.25.zip源码和jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    jcl-over-slf4j-1.6.0.jar logbank转log4j 日志转换 使用场景 实例

    《jcl-over-slf4j-1.6.0.jar:日志框架转换与使用场景实例解析》 在软件开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态,定位错误和异常。在Java世界里,我们常常会遇到多种日志框架并存的情况...

    jcl-over-slf4j-1.7.25-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.25.jar; 赠送原API文档:jcl-over-slf4j-1.7.25-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.25-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.25.pom; 包含翻译后...

    jcl-over-slf4j-1.7.33-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.33.jar; 赠送原API文档:jcl-over-slf4j-1.7.33-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.33-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.33.pom; 包含翻译后...

    log4j各版本jar包

    《log4j各版本详解与应用》 在Java开发领域,日志管理是不可或缺的一部分,而Log4j作为Apache组织开发的一款开源日志框架,因其高效、灵活的特点,被广泛应用于各种Java应用程序中。本文将深入探讨Log4j的各个版本...

    apache-log4j-2.3 核心jar包

    **log4j-api-2.x 和 log4j-core-2.x是必须的,其他包根据需要引入, Common Logging Bridge: log4j-jcl-2.3 Log4j 2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能...

    基于Java日志平台的访问链路追踪实战(1.01G)

    ---03-系统日志与log4j日志简介.mp4 ---04-log4j实例代码展示.mp4 ---05-jul的诞生与代码展示.mp4 ---06-jcl的历史背景与简介.mp4 ---07-jcl面向接口代码风格展示.mp4 ---08-jcl的优缺点与解决方案.mp4 ---09-...

    基于Java日志平台的访问链路追踪实战(1.34G)

    ---03-系统日志与log4j日志简介.mp4 ---04-log4j实例代码展示.mp4 ---05-jul的诞生与代码展示.mp4 ---06-jcl的历史背景与简介.mp4 ---07-jcl面向接口代码风格展示.mp4 ---08-jcl的优缺点与解决方案.mp4 ---09-...

    sclo-cassandra3-log4j-jcl-2.7-4.el7.noarch.rpm

    官方离线安装包,亲测可用

    slf4j-1.7.21所有相关jar包

    该压缩包中包含以下内容: 1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-...

    jcl-over-slf4j-1.7.30-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.30.jar; 赠送原API文档:jcl-over-slf4j-1.7.30-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.30-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.30.pom; 包含翻译后...

    jcl-over-slf4j-1.7.25.jar 由于下载次数较多,所需积分上去了,我已下调

    jcl-over-slf4j.jar — (redirect) —> SLF4j —> slf4j-log4j12-version.jar —> log4j.jar —> 输出日志 看到上面的流程图可能会发现一个有趣的问题,假如在 CLASS_PATH 里同时放置 log4j-over-slf4j.jar 和 ...

    jcl-over-slf4j-1.7.32-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.32.jar; 赠送原API文档:jcl-over-slf4j-1.7.32-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.32-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.32.pom; 包含翻译后...

    最新slf4j-1.7.21.zip源码和jar包

    1、jcl-over-slf4j-1.7.21.jar 2、jcl-over-slf4j-1.7.21-sources.jar 3、jul-to-slf4j-1.7.21.jar 4、jul-to-slf4j-1.7.21-sources.jar 5、log4j-over-slf4j-1.7.21.jar 6、log4j-over-slf4j-1.7.21-sources....

    log4j-2.17.1的jar包,导入即可使用

    与其他日志库相比,Log4j 提供了更多的定制选项和更高的性能。 2. **版本升级**:从`2.17.1`的版本号可以看出,这是一款经过多次迭代的产品。每次版本升级通常会修复已知问题、增强功能或者提升安全性。在这个特定...

    jcl-over-slf4j-1.7.16-API文档-中英对照版.zip

    赠送jar包:jcl-over-slf4j-1.7.16.jar; 赠送原API文档:jcl-over-slf4j-1.7.16-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.16-sources.jar; 赠送Maven依赖信息文件:jcl-over-slf4j-1.7.16.pom; 包含翻译后...

    jcl-over-slf4j-1.7.21-API文档-中文版.zip

    赠送jar包:jcl-over-slf4j-1.7.21.jar; 赠送原API文档:jcl-over-slf4j-1.7.21-javadoc.jar; 赠送源代码:jcl-over-slf4j-1.7.21-sources.jar; 包含翻译后的API文档:jcl-over-slf4j-1.7.21-javadoc-API文档-...

    log4j-jcl-2.13.2.jar

    Apache Log4j Commons日志记录适配器 org.apache.logging.log4j/log4j-jcl/2.13.2/log4j-jcl-2.13.2.jar

    log4j-jcl-2.12.1.jar

    Apache Log4j Commons日志记录适配器 org.apache.logging.log4j/log4j-jcl/2.12.1/log4j-jcl-2.12.1.jar

Global site tag (gtag.js) - Google Analytics