扩展jdk日志框架

扩展jdk日志框架

ID:33857567

大小:82.50 KB

页数:9页

时间:2019-03-01

扩展jdk日志框架_第1页
扩展jdk日志框架_第2页
扩展jdk日志框架_第3页
扩展jdk日志框架_第4页
扩展jdk日志框架_第5页
资源描述:

《扩展jdk日志框架》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、日志记录对于软件的维护特别是对于已部署到运行环境之后的软件调试都有着重要的意义。本文介绍了JDK的日志框架,以及如何根据不同需求自定义日志处理、消息格式化、消息级别等组件。最后阐述了如何利用JDK日志框架的扩展能力将Java程序能够通过STAF(SoftwareTestingAutomationFramework,一种自动化测试框架)日志服务来进行监视。  自Java1.4开始,JDK包括了一个崭新的日志框架包java.util.logging,该日志框架设计精良,和JDK紧密结合,控制灵活,使用简单。日志记录对于软件的维护特别是对于已部署到

2、运行环境之后的软件调试都有着重要的意义。在实际的项目中,往往还需要比该框架所提供的更为复杂的日志功能。对于这种需求,JDK日志框架具有足够的可扩展能力,可以自定义不同需求的日志处理、消息格式化、日志消息级别等组件。在下面的内容中,本文将介绍了如何扩展JDK日志框架,自定义日志处理方式。并就一个实际的例子来介绍如何结合JDK日志框架和STAF(SoftwareTestingAutomationFramework,一种自动化测试框架)日志服务来对Java程序进行监视。   JDK日志框架介绍  JDK的日志框架即java.util.logging

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

4、对于一个已经部署到运行环境中的软件而言,可以非常方便的改变日志配置而无需改变其源代码。  JDK日志框架提供了上述的所有功能。它主要包括如下几个部件:Logger:日志记录对象。用于记录日志信息。Handler:用于处理日志信息的输出。在Handler类中,可以决定日志是输出到文件中还是控制台中。Filter:用于过滤日志。在Filter类中,可以根据日志级别或者某种条件来决定是否输出该日志。这样达到去除冗余信息的目的。Formatter:用于格式化日志信息。该类可以将日志文本格式化成XML或者HTML的格式,这完全依赖于具体的实现。Leve

5、l:用于表示日志的级别。JDK日志框架默认有如下级别:SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST。  对于程序而言,它的Logger对象首先会判断日志的级别是否满足输出级别的要求,然后将满足级别要求的日志消息交给所配置的Handler对象来处理,如果日志对象配置了一个Filter对象,那么Filter对象将会对日志信息做一次过滤。Handler对象接受到日志消息后,根据其所配置的格式化类Formatter来改变日志的格式,根据所配置的Filter对象和Level对象来再次过滤日志信息,最后输出到该

6、种Handler对象所指定的输出位置中,该输出位置可以是控制台,文件,网络socket甚至是内存缓冲区。其架构模型如图1所示。图1JDK日志框架9/9  JDK提供了如下几种默认支持的Handler类:ConsoleHandler:输出日志到控制台中FileHandler:输出日志到指定文件中MemoryHandler:输出日志到内存缓冲区中,当一定的条件满足的时候(如某种关键字的日志信息)再将缓冲区中的日志输出SocketHandler:输出日志到网络socket中StreamHandler:输出日志到输入输出流对象中  同时JDK日志框架

7、也不失其灵活性,你可以定制自己所需要的Handler,将日志按照自定义的需求输出到不同的位置,同时Formatter,Level类都可以自定义扩展,下面就详细叙述如何自定义扩展这些组件。   自定义日志Handler  所有的Handler类都是继承自java.util.logging.Handler抽象类,该类结构图如图2所示。图2Handler类图  由该类图可见,Handler抽象类提供了抽象接口:publish,flush和close.这些接口提供了日志输出的基本功能。同时Handler类保存了Formatter,Filter和Lev

8、el对象用来控制日志输出。因此,编写自定义的Handler类需要如下步骤:  1、继承Handler抽象类  2、实现publish,flush和close方法。其

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。