45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:使用api的步骤

使用api的步骤

2016-09-03 06:27:19 来源:www.45fan.com 【

使用api的步骤

JDK 1.4中引入的日志API,能够捕获很多错误信息,比如:设置错误、性能瓶颈、安全破坏、程序或平台小问题等。这些API提供的日志非常适用于各种不同使用者的分析,包括:外出服务工程师,软件开发人员,参与客户管理和维护的系统管理员。
日志的定义
使用api的步骤

日志是一个记录信息的系统化方法,它应该具有如下的特点:

  • 简单,需要最简单的手段就可以将信息输入到原始程序。
  • 可追踪,需要最小的能力就可以理解。
  • 可维护,当程序更改时,需要最小的能力就可以更改信息。

很多开发人员都习惯使用System.err.println函数来显示调试信息。这一方法简单吗?是的。可追踪吗?不见得,除非你可以定义这一函数显示和保存详细的信息。可维护吗?可以明确地说,这是不可能的。和System.out.println or fout.println一样,使用其他方法,如OutputStream 对象也是非常的麻烦。

JDK 1.4中的日志API提供了面向对象的具有日志功能的界面,它具有简单,可追踪,可维护的错误诊断特点,适用于从终端用户到开发人员的不同用户。表A列举了日志API的关键原理。

表 A
类名称 描述
Logger 用于构成日志调用的主体
LogRecord 用于在日志框架和独立日志处理器对象之间传递日志请求
Handler 用于输出LogRecord对象到不同的输出类型,比如OutputStream 和文件
Level 定义一个事先调整的日志级别,用于控制日志的输出
Filter 提供了能控制记录日志的方法
Formatter 一个Formatter对象支持格式化LogRecord对象
日志记录器
使用api的步骤

既然我们已经知道日志API函数的概貌,现在让我们看看这些函数的基本实际应用。在运行源代码之前,请记得添加如下的声明,这些声明包括日志API的封装。

importjava.util.logging.*;

正如前面提到的那样,一个日志记录器对象的任务是生成日志消息。你可以使用以下的声明来构建一个日志记录器对象:

static Logger theLogger = Logger.getLogger(LoggingTest.class.getName());

以上的声明使用一个名为getLogger的方法来构建或查找一个日志记录器theLogger对象。每一个日志记录器对象包含一个识别唯一记录器的名称。如果一个现成的日志记录器已经使用一个名称,则返回的是一个现成的对象,否则将构建一个新的对象。记录器名称将用于在LoggerManager中注册记录器对象。

在很多情况下,比如在一个applet程序,使用一个注册记录器是不太方便的,因为这会使安全检测复杂化。你可以使用一个无称号的日志记录器,所以applet程序能够更新日志的状态。你可以使用以下的代码构建一个无符号日志对象:

static Logger theLogger = Logger. getAnonymousLogger();

以下的声明将显示一个日志消息:

theLogger.info("Hello logging!");

System.err.println不同,这一声明能够记录比文本消息更多的信息。声明有如下的输出:

2003/2/27 08:46:31LoggingTesttestLogger
Info: Hello logging!

日志记录器对象能够记录日志日期,时间,调用类,调用方法,日志级别,以及文本消息。以前要输出如此详细的信息必须编写很多行代码,但现在的日志记录器简化了这一过程。

在上面的范例中,INFO方法用于输出日志消息,很多方法都可以用于输出日志消息,但是INFO方法特别地用于输出一个INFO级别的日志消息。

级别

System.err.println不同,一个日志记录器对象不会立即输出所有信息,这一设置可以避免输出非重要数据而陷入通用语言运行时间的困境。为了决定在一定时间内输出哪一类消息,一个类级别应该用来限制记录的日志。表B提供了记录日志的定义了的级别列表。

 

表 B
级别 重要性 日志记录器相应的日志方法 级别数值
SEVERE 非常重要 severe(String message); 1000
WARNING 针对警告 warning(String message); 900
INFO 信息化的运行时间消息 info(String message); 800
CONFIG 静态设置的消息 config(String message); 700
FINE 提供追踪信息 fine(String message); 500
FINER 显示详细的追踪信息 finer(String message); 400
FINEST 更详细的追踪信息 finest(String message); 300
ALL 显示所有应该日志记录的信息 没有可应用的 Integer.MIN_VALUE
OFF 关闭日志 没有可应用的 Integer.MAX_VALUE

请注意前面七个级别都是限制日志记录,后面两个级别用于日志的使用和关闭。

 

使用api的步骤

日志可以以两种方式进行级别限制。第一种方式是使用预定义好的函数,如上面范例所示。另一方式是使用带有级别对象的方法,例如,如果你想要在一个CONFIG级别记录一条消息,可以使用如下的代码:

theLogger.config(“Hello Logging!”);

或者
theLogger.log(Level.CONFIG, “Hello Logging!”);

处理程序

以上范例的输出都是面向控制台,但是日志API也提供输出目标的另一种方式,即处理程序对象。

下面两行代码构建了一个用于myLogger.txt文件的处理程序,并在日志记录器对象theLogger中插入处理程序:

FileHandler h = new FileHandler("./myLogger.txt");
theLogger.addHandler(h);

这两行代码运行之后,控制台会出现一个日志信息,这和文件myLogger.txt内部的执行效果是一样的。
表C提供了可行使用的处理程序类的列表。

 

表 C
处理程序 用途
StreamHandler 写一个格式化的记录到an OutputStream
ConsoleHandler 写一个格式化的记录到System.err
FileHandler 定格式化日志记录到一个单一文件或到多个日志文件
SocketHandler 写格式化记录到远程TCP端口
MemoryHandler 在内存中存储日志记录

可以看到,输出目标范围可以从文件控制台到网络,处理器不仅能够控制日志信息的目的地,而且还可以控制输出格式,这也需要格式程序的帮助。

格式程序

 

使用api的步骤

格式程序用于定义日志输出的规划。JDK 1.4提供了两种格式程序:SimpleFormatter and XMLFormatter。前者显示了如前面所示的规划,后者构建的规划是以一个XML格式。以下代码段将日志消息以XML格式输出到一个文本文件,所下所示:

FileHandler h = new FileHandler("./myLogger.txt");
theLogger.addHandler(h);
h.setFormatter(new XMLFormatter());


每一个处理程序对象通常包含一个格式程序对象。在以上范例中,调用theLogger.info(“Hello Logging!”)之后,文本文件myLogger.txt将包含如下的内容:





2003-02-27T21:22:32
1046352152354
0
LoggingTest
INFO
LoggingTest
testLogger
10
Hello logging!



 

因为XML规划可以由通用XML剖析器读取和处理,你可以利用以上的XML文件和XML剖析器程序重构一个新的格式程序。

坚守核心技术

在本文中,我们供提了JDK 1.4中日志API的一个基本概貌,并着重介绍了日志记录器、级别、处理程序、格式程序对象等。这些对象都是最基本的使用工具,在使用日志功能之前必须很好地理解它们。

然而,日志API提供了超乎这些基本功能的复杂级别。例如,你可以利用特定程序功能开发自己的级别,处理程序,格式对象。其他一些更先进的概念,比如使用过滤器来控制日志选项,在运行程序中使用动态设置更新,使用LogManager来跟踪全局日志信息。

你应该考虑掌握这些核心技术,因为这些更先进的功能在日志API的新版本中作用更大。

 

本文地址:http://www.45fan.com/dnjc/71543.html
Tags: 日志 Java API
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部