快速业务通道

扩展JDK日志框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
中。该类还可以和一个 ResourceBundle 对象绑 定,实现消息字符串的本地化处理。

本节描述了一个典型的自定义的 Handler 类的实现。在本文后面部分将会有一个实际的例子来介绍如何实现一个 STAF 日志处理类。

自定义日志 Formatter

日志可以被格式化为一定格式的文本,也可以成为 XML 或者 HTML 这样标准的格式。这取决于 Formatter 类的具体实现。 Formatter 抽 象类提供了 format 成员函数用于扩展。一个典型的自定义 Formatter 类实现如清单 3 所示:

清单 3 LogRecord 类定义

public class MyFormatter extends Formatter {    private final String lineSeparator = System.getProperty("line.separator");    @Override    public String format(LogRecord record) {      StringBuffer sb = new StringBuffer();      String message = formatMessage(record);      sb.append(record.getLevel().getLocalizedName());      sb.append(message);      sb.append(lineSeparator);      if (record.getThrown() != null) {        try {        StringWriter sw = new StringWriter();        PrintWriter pw = new PrintWriter(sw);        record.getThrown().printStackTrace(pw);        pw.close();        sb.append(sw.toString());        } catch (Exception ex) {        }      }      return sb.toString();    } }

其中 formatMessage 方法提供了默认的将日志记录本地化和格式化的方法。它还能支持 java.text 风格的文本格式化,这只需要在调用 Logger 对象的 setMessage 方法设定 java.text 风格的格式字符串,同时通过 setParameters 方法设置参数,这样 formatMessage 将会根 据所设置的 java.text 风格的格式字符串来格式化日志消息。总之,formatMessage 方法方便了子类格式化字符串。使子类只需要定义输出文 本的格式而无需考虑本地化等问题。

扩展JDK日志框架(4)

时间:2011-07-18 IBM 颜 林

自定义日志消息级别

JDK 日志框架默认提供了 SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 这几种日志级别。如果我们需要定义更多的日志级别, 只需要继承 java.util.logging.Level 类,然后将自定义的级别作为静态成员变量声明即可。一个典型的自定义的消息类如清单 4 所示。

清单 4 自定义 Level 类

public class MyLevel extends Level {    protected MyLevel(String name, int value) {      super(name, value);    }    public static final Level Level1 = new MyLevel("Level1", 123);    ... // 其他自定义级别 }

权重值 value 是一个整型数。在默认的 JDK 日志级别中,SEVERE 的权重是 1000,FINEST 是 300,可以根据具体的需求来定义每个自定 义级别的权重。例如在 WARNING 和 INFO 级别中加入一个新的级别,该级别的权重必须介于 800 到 900 之间。

自由的日志配置

和其他日志框架一样,JDK 日志框架同样提供了强大的日志配置功能。你既可以通过代码进行动态配置,也可以通过配置文件来实现自由灵 活的配置。通过代码动态配置,应用程序可以实现在运行过程中改变日志类的配置,动态地改变不同的配置组合。一个简单的动态配置代码如 清单 5 所示。

清单 5 动态配置 Logger 对象

public static void main(String[] args){    Handler fh = new FileHandler("%t/wombat.log");    Logger.getLogger("logname").addHandler(fh);    Logger.getLogger("com.wombat").setLevel("com.wombat",Level.FI

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号