大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 简介 Logging

程序中不免会出现错误,当错误发生时,您可以使用System.err.println()或是 System.out.println()在主控台 (Console)显示讯息给使用者,如果是在视窗程序中,可能是使用讯息方块,如果是在网页程序中,则显示一个错误讯息页面,除了提供错误讯息之外,您还可能想将错误讯息以某种方式储存下来,以供使用者或是程序人员debug时使用。

在Java中的java.util.logging包提供了一系列的logging工具,如果您只是要简单的记录一些讯息,就可以使用 它,这些logging工具在J2SE 1.4之后加入了Java标准中,不必额外配备logging组件就可以运行于标准的Java平台上是它的好处。

像是简单的主控台讯息显示或是记录文件的输出,java.util.logging下都提供了一些默认的工具,您不必亲自撰写这些工具。

来看一个简单的例子,假设您的程序在启动时必须提供参数,如果使用者没有提供参数,则必须显示警示讯息:

  • LoggingDemo.java
package onlyfun.caterpillar;

import java.util.logging.*;

public class LoggingDemo {
public static void main(String[] args) {
Logger logger = Logger.getLogger("LoggingDemo");

try {
System.out.println(args[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
logger.warning("没有提供执行时的参数!");
}
}
}

执行结果:
2005/2/3 上午 10:50:54 onlyfun.caterpillar.LoggingDemo main
警告: 没有提供执行时的参数! 


如上所示的,您简单的透过Logger的静态方法getLogger()取得Logger对象,之后就可以运用它的方法进行讯 息输出,默认是从主控台输出讯息,除了您提供的讯息之外,Logger还自动帮您收集了相关的讯息,像是类与包名称,执行该段程序的线程名称以及讯 息产生的时间等,这比下面这个程序所提供的讯息丰富的多了。
  • LoggingDemo.java
package onlyfun.caterpillar;

public class LoggingDemo {
public static void main(String[] args) {
try {
System.out.println(args[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.err.println("没有提供执行时的参数!");
}
}
}

您不用亲自实现,直接使用 java.util.logging 工具,就可以拥有一些默认的记录功能,作为中大型系统来说,java.util.logging 工具可能不足,但作为一个简单的记录工具,java.util.logging 是个可以考虑的对象。