Handler负责日志讯息的输出目的地,在Java SE中默认有五个Handler:
以 System.err 输出记录。
将讯息输出至文件
以 OutputStream 输出记录。
将讯息透过Socket传送至远端主机。
将讯息暂存在内存中。
如果这五个Handler还不符合您的需求,则可以自订Handler,方法是继承java.util.logging.Handler类,这个类有三个抽象方法必须覆盖: public void publish(LogRecord logRecord);
public void flush(); public void close(); publish()方法可取得LogRecord实例,您可以使用它来取得一些与程序执行有关的日志信息,flush()方法用来将缓冲区中的日志讯息出 清(如果有的话),close()方法用来关闭输出讯息的对象(例如文件开启的话,可以在这边关闭文件),以释放所有的相关资源。 Handler通常搭配Formatter,Handler负责输出,而Formatter负责格式,Formatter的自订可以引用自订 Formatter,java.util.logging.Handler 默认并没有设置Formatter,在实现Handler时,Handler的setFormatter()是用来设置Formatter的,您可以在 publish()中透过getFormatter()来取得Formatter实例,进行格式化输出,例如:
import java.util.logging.*;
public class CustomLogHandler extends Handler { ... public void publish(LogRecord logRecord) { String logMsg = getFormatter().format(logRecord); out.print(logMsg); // out 是您自订的输出目的地对象 } public void flush() { .... } public void close() { ... } } |