JDK日志框架之综合实现浅析

开发 后端
JDK 日志框架简单灵活,本文介绍了 JDK 日志框架的结构,如何扩展JDK 日志框架使之满足实际的项目需求,给需要扩展JDK组件的开发者提供帮助。

JDK日志框架之综合实现就是将之前的一切组合起来,实现一个JDK日志类的结合。

JDK日志清单 12 描述了如何在一段实际的代码中将 STAF 日志处理类和 JDK 日志类结合起来。 从清单 12 可以看出,该实例默认指定输出到 STAF 日志服务的日志名称为“ staflogger ”。然后通过动态配置的方法来设定 Handler,Level 和 Formatter .最后在调用JDK的日志对象的log 方法记录了 4 种自定义级别的日志。

JDK日志清单 12 一个完整的例子

package demo.staflog;

  1. import java.util.logging.Logger;   
  2.  
  3. public class STAFLoggerTest {   
  4. public static void main(String[] args) {   
  5. Logger logger = Logger.getLogger(STAFLoggerTest.class.getName());   
  6. logger.setUseParentHandlers(false);   
  7. logger.setLevel(STAFLevel.DEBUG);   
  8. STAFHandler stafHandler = new STAFHandler("staflogger");   
  9. stafHandler.setLevel(STAFLevel.DEBUG);   
  10. stafHandler.setFormatter(new STAFFormatter());   
  11. logger.addHandler(stafHandler);   
  12. //log   
  13. logger.log(STAFLevel.DEBUG, "debug log");   
  14. logger.log(STAFLevel.FATAL, "fatal log");   
  15. logger.log(STAFLevel.ERROR, "error log");   
  16. logger.log(STAFLevel.TRACE, "trace log");   
  17. }   
  18. }  

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

JDK日志清单 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 .

JDK日志清单 14 STAFLog 类定义

  1. public class STAFLoggerTest {   
  2. private static Level defaultLevel = STAFLevel.DEBUG;   
  3. public static void main(String[] args) {   
  4. //log   
  5. logger.log(STAFLevel.DEBUG, "debug log");   
  6. logger.log(STAFLevel.FATAL, "fatal log");   
  7. logger.log(STAFLevel.ERROR, "error log");   
  8. logger.log(STAFLevel.TRACE, "trace log");   
  9. }   
  10. }  

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

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

  1. mymachine:~ myname$ staf local log query machine mymachine logname staflogger   
  2.  Response   
  3.  --------   
  4.  Date-Time         Level Message     
  5.  ----------------- ----- ----------   
  6.  20081111-16:15:21 Debug debug log   
  7.  20081111-16:15:21 Fatal fatal log   
  8.  20081111-16:15:21 Error error log   
  9.  20081111-16:15:21 Trace trace log 

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

结束语

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

【编辑推荐】

  1. JDK1.5中新的语言特征浅析
  2. 在JDK7 b50中将实现正则表达式命名捕获组
  3. JDK日志框架介绍及其主要功能浅析
  4. JDK日志框架之自定义日志Handler浅析
  5. JDK日志框架之自定义日志Formatter
责任编辑:仲衡 来源: CSDN博客
相关推荐

2009-07-07 14:00:25

JDK日志Handler

2009-07-07 15:14:56

JDK日志STAF

2009-07-07 14:32:47

JDK日志Formatter

2009-07-07 13:45:52

JDK日志框架

2010-02-05 15:33:29

Android JDK

2009-07-08 17:02:11

JDK实现调用拦截器

2009-07-07 16:13:39

JDK日志

2009-07-07 16:39:40

JDK Observe

2009-07-08 17:59:51

JDK JRE

2009-07-08 14:06:22

ClassLoaderJDK源码

2009-07-09 11:02:37

JDK5.0内置工具

2022-05-24 07:39:09

MySQL数据库日志

2021-02-18 07:46:07

日志框架

2009-09-14 16:46:15

LINQ to XML

2009-07-16 09:14:26

iBATIS DAO

2009-09-22 13:09:06

Hibernateorm框架

2011-05-20 10:15:06

JDK7

2014-09-11 17:02:41

综合布线

2009-10-19 16:53:47

综合网络布线系统

2009-07-15 14:21:03

MyEclipse S
点赞
收藏

51CTO技术栈公众号