Java Apache Commons Logging架起多种解决方案之间的桥梁

ZDNet软件频道 时间:2003-04-07 作者:BUILDER.COM |  我要评论()
本文关键词:
Commons Logging项目并不是另一个日志方案——这已经够多了。其实,它是一个轻量抽象层,用来智能地包装现有的日志系统。
本文译自Builder.com控制台或行式打印机上文字形式的日志是最古老的查错手段之一。因此你也许认为在相对较新的如Java这样的语言中,日志除错信息会很完美。确实,有很多可用得方法,从基础的System.out.println方法到log4j到Sun在Java 1.4中引入的JDK Logging API。但是,在一种日志系统取得统治地位之前,要编写简洁的包含日志语句的代码还是会引起一些问题。而Commons Logging项目弥补了这些不足。

Commons Logging介绍

Commons Logging是Jakarta项目的一个子项目,而Jakarta又是Apache名下的一个子项目。Jakarta项目的目标是开发适合包含第三方应用的可重用代码。有了这个目标以及现实中几种日志解决方案的不兼容,于是对于日志Jakarta开发者有两种选择。一是选择其中一种方案,这样产生的代码需要其它包括他的程序也要选择相同的日志包。另一种是根本就不使用日志语句,从而失去了大量的功能,变成需要自记录的代码。两种选择都难以令人满意,所以Jakarta的开发者开始了Commons Logging项目。

Commons Logging项目并不是另一个日志方案——这已经够多了。其实,它是一个轻量抽象层,用来智能地包装现有的日志系统。消息日志调用会经过它而传递到底层的日志系统中。最终结果是代码对任何日志系统来说都是适合的。

使用Commons Logging

使用Commons Logging几乎不需要新的代码,而且看起来与使用log4j或JDK Logging API很相似。必须把commons-logging.jar包放在程序调用的CLASSPATH中。列表A中的代码是记录一条文字日志所需的最少代码。前两行只是用来引入所需的Commons Loging类。

注释为Line A的语句从LogFactory中请求一个Log类的实例。这个Log实例只是作为由LogFactory选择的任何一种日志包装的代理。LogFactory的静态方法getLog需要一个参数,可以是String或者Class。如果底层的日志系统支持的话,这个参数指出了日志的类型。注释为Line B的语句告知Log对象代理一个日志请求。除了查错级,还有信息、警告、错误、严重错误级。这些尽可能地被映射到底层日志系统所支持的错误级别上。

除了记录单纯的文字信息,Log类还可以记录Exception对象和底层日志系统的当前错误级别。Exception对象可以作为可选的第二参数传递给debug、info、warn、error以及fata方法,就像使用log4j或JDK Logging API一样。用与所支持的每个错误级别相应的isXxxxxxEnable方法来检查当前错误级别。使用它们是纯粹用于优化的目的。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134