JDK日志框架介绍及其主要功能浅析

开发 后端
JDK日志框架提供了强大的功能,JDK日志框架中日志记录对于软件的维护特别是对于已部署到运行环境之后的软件调试都有着重要的意义。

JDK日志框架是什么?JDK日志框架主要功能又是什么呢?JDK日志记录对于软件的维护特别是对于已部署到运行环境之后的软件调试都有着重要的意义。本文介绍了 JDK的日志框架,以及如何根据不同需求自定义日志处理、消息格式化、消息级别等组件。***阐述了如何利用日志框架的扩展能力将Java 程序能够通过 STAF(Software Testing Automation Framework,一种自动化测试框架)日志服务来进行监视。

自 Java 1.4 开始,JDK包括了一个崭新的日志框架包 java.util.logging,该日志框架设计精良,和 JDK紧密结合,控制灵活,使用简单。日志记录对于软件的维护特别是对于已部署到运行环境之后的软件调试都有着重要的意义。在实际的项目中,往往还需要比该框架所提供的更为复杂的日志功能。对于这种需求,JDK日志框架具有足够的可扩展能力,可以自定义不同需求的日志处理、消息格式化、日志消息级别等组件。在下面的内容中,本文将介绍了如何扩展 JDK日志框架,自定义日志处理方式。并就一个实际的例子来介绍如何结合 JDK日志框架和 STAF(Software Testing Automation Framework,一种自动化测试框架)日志服务来对 java 程序进行监视。

JDK日志框架介绍

JDK的日志框架即 java.util.logging 包。对于一个软件的日志系统而言,首先必须得有一个日志对象,该对象负责记录日志信息。同时该信息可以输出到不同的位置,例如控制台,文件甚至网络中。对于信息的格式,则可以根据不同的需求,可以输出成普通文本,XML 或者 Html 的格式。同时还需要对日志信息进行不同级别的分类,这样的好处是可以过滤冗余信息,只保留关键的日志。对于一个日志框架而言,日志对象必须是可配置的,它可以按照配置来输出到指定的目标,同时按照配置来决定输出的格式和决定何种级别以上的日志才能输出。配置的形式还可以是多种多样的,既能是代码的形式,也能是配置文件的形式。尤其是配置文件的形式,对于一个已经部署到运行环境中的软件而言,可以非常方便的改变日志配置而无需改变其源代码。

JDK日志框架提供了上述的所有功能。它主要包括如下几个部件:

◆Logger:日志记录对象。用于记录日志信息。

◆Handler:用于处理日志信息的输出。在 Handler 类中,可以决定日志是输出到文件中还是控制台中。

◆Filter: 用于过滤日志。在 Filter 类中,可以根据日志级别或者某种条件来决定是否输出该日志。这样达到去除冗余信息的目的。

◆Formatter:用于格式化日志信息。该类可以将日志文本格式化成 XML 或者 Html 的格式,这完全依赖于具体的实现。

◆Level:用于表示日志的级别。 JDK日志框架默认有如下级别 : SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 。

对于程序而言,它的 Logger 对象首先会判断日志的级别是否满足输出级别的要求,然后将满足级别要求的日志消息交给所配置的 Handler 对象来处理,如果日志对象配置了一个 Filter 对象,那么 Filter 对象将会对日志信息做一次过滤。 Handler 对象接受到日志消息后,根据其所配置的格式化类 Formatter 来改变日志的格式,根据所配置的 Filter 对象和 Level 对象来再次过滤日志信息,***输出到该种 Handler 对象所指定的输出位置中,该输出位置可以是控制台,文件,网络 socket 甚至是内存缓冲区。

JDK 提供了如下几种默认支持的 Handler 类:

◆ConsoleHandler: 输出日志到控制台中

◆FileHandler:输出日志到指定文件中

◆MemoryHandler:输出日志到内存缓冲区中,当一定的条件满足的时候(如某种关键字的日志信息)再将缓冲区中的日志输出

◆SocketHandler: 输出日志到网络 socket 中

◆StreamHandler: 输出日志到输入输出流对象中

JDK日志框架的相关介绍就到这里,对于JDK日志框架的使用要在实践中多加学习纠正,同时 JDK日志框架也不失其灵活性,你可以定制自己所需要的 Handler,我们在以后的文章中将会介绍到。

【编辑推荐】

  1. 初学Java多线程:向线程传递数据的三种方法
  2. Java中两个特殊变量this和super 的使用
  3. 3.6.3 this关键字和构造方法的调用
  4. 5.7.8 null和this关键字
  5. Java学习笔记-JSF
责任编辑:仲衡 来源: 互联网转载
相关推荐

2010-03-05 13:53:38

Python Thre

2010-04-26 16:51:11

Oracle Deco

2010-03-03 13:50:40

Python文件

2011-11-16 09:59:50

私有云云存储

2011-03-02 17:48:59

2010-06-30 11:04:41

SNMP协议网络管理

2010-06-01 10:52:14

IPv6交换中心

2016-02-19 10:03:30

苹果支付Apple Pay

2009-12-03 13:55:10

路由器主要功能

2010-06-24 13:57:57

Linux Cat命令

2019-10-31 09:14:27

物联网网关物联网IOT

2023-12-03 18:30:12

2016-12-02 16:00:22

服务器托管机柜

2009-11-09 10:51:46

2010-02-22 16:09:18

骨干交换机

2012-04-20 17:58:42

2009-03-08 09:15:09

Windows 7微软功能禁用

2010-01-14 17:46:29

智能交换机

2009-12-22 09:41:15

无线路由器

2014-12-22 10:39:44

虚拟化云平台PaaS
点赞
收藏

51CTO技术栈公众号