快速业务通道

扩展JDK日志框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
方法来设定 Handler,Level 和 Formatter 。最后在调用 JDK 的日志对 象的 log 方法记录了 4 种自定义级别的日志。

清单 12 一个完整的例子

package demo.staflog; import java.util.logging.Logger; public class STAFLoggerTest {    public static void main(String[] args) {      Logger logger = Logger.getLogger(STAFLoggerTest.class.getName());      logger.setUseParentHandlers(false);      logger.setLevel(STAFLevel.DEBUG);      STAFHandler stafHandler = new STAFHandler("staflogger");      stafHandler.setLevel(STAFLevel.DEBUG);      stafHandler.setFormatter(new STAFFormatter());      logger.addHandler(stafHandler);      //log      logger.log(STAFLevel.DEBUG, "debug log");      logger.log(STAFLevel.FATAL, "fatal log");      logger.log(STAFLevel.ERROR, "error log");      logger.log(STAFLevel.TRACE, "trace log");    } }

但我们也可以将这些代码改为配置文件的方式,其配置文件如清单 13 所示:

清单 13 STAFLog 类定义

# 设置日志对象的 Handler demo.staflog.STAFLoggerTest.handlers= demo.staflog.STAFHandler demo.staflog.STAFLoggerTest.level = DEBUG # 取消发送日志到父 Logger 对象 demo.staflog.STAFLoggerTest.useParentHandlers = FALSE # 设置 Handler 的名称,输出级别和格式化对象 demo.staflog.STAFHandler.name= staflogger demo.staflog.STAFHandler.level = DEBUG demo.staflog.STAFHandler.formatter = demo.staflog.STAFFormatter

这样代码可以简化为清单 14 。

清单 14 STAFLog 类定义

public class STAFLoggerTest { private static Level defaultLevel = STAFLevel.DEBUG;    public static void main(String[] args) {      //log      logger.log(STAFLevel.DEBUG, "debug log");      logger.log(STAFLevel.FATAL, "fatal log");      logger.log(STAFLevel.ERROR, "error log");      logger.log(STAFLevel.TRACE, "trace log");    } }

配置文件的方式相对于动态配置的方式更加灵活,因为这无需改变和重新编译代码,只需要修改配置文件,就能修改日志中 Handler, Level 和 Formatter 的组合配置,这对于已经部署发布的软件而言,有着更为实际的意义。

当运行代码后,在命令行中输入 STAF 命令来显示 STAF 日志 staflogger:

mymachine:~ myname$ staf local log query machine mymachine logname staflogger Response -------- Date-Time     Level Message  ----------------- ----- ---------- 20081111-16:15:21 Debug debug log 20081111-16:15:21 Fatal fatal log 20081111-16:15:21 Error error log 20081111-16:15:21 Trace trace log

这显示了我们刚才在 Java 代码中记录的信息,它们已经被输出到 STAF 的日志服务中了。

结束语

JDK 日志框架简单灵活,它虽然比 log4j 出现的时期晚,但其功能并不比 log4j 少。而且 JDK 日志框架直接隶属于 JDK,被 Java 标准 所支持而无需安装第三方库文件。本文介绍了 JDK 日志框架的结构,如何扩展 JDK 日志框架使之满足实际的项目需求。并以如何在 Java 程 序中将日志输出到 STAF 的日志服务中为例,一步步描述了如何实现扩展 JDK 日志组件,使之和 STAF 日志服务结合到一起,同时如何创建灵 活的配置文件来组合日志框架组件。希望本文可以给其他需要扩展 JDK 日志组件的开发者提供帮助。

本文配套源码

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号