Android JDK日志可以促使移动设备的创新,让用户体验到***越的移动服务,同时,开发商也将得到一个新的开放级别,丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集成开发环境插件。
由该类可见,Android JDK日志抽象类提供了抽象接口:publish, flush 和 close .这些接口提供了日志输出的基本功能。同时 Handler 类保存了 Formatter,Filter 和 Level 对象用来控制日志输出。因此,编写自定义的 Handler 类需要如下步骤:
1、继承 Handler 抽象类
2、实现 publish,flush 和 close 方法。其中 publish 方法是用于发布一条日志记录。 flush 方法是清空内存缓冲区。 close 方法是当应用程序关闭的时候,释放该 Handler 类所申请的资源(如文件,socket 等)
3、设置默认的 Formatter,Filter 和 Level 对象。必要的时候,可以在类的初始化时候读取配置文件来设置这些参数。
- 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();
- }
- }
这里 reportError 方法是将日志类中的错误信息输出到外界,这个是由 ErrorManager 类实现的ErrorManager 类负责记录日志框架中 Handler 的错误。一般情况下是将该错误打印到控制台中。
具体的每条日志消息被Android JDK日志框架封装成 LogRecord 对象,该类部分定义如 清单所示。由清单可见,LogRecord 类包含了一个日志消息的级别、消息文本、时间、参数、线程等等所有的信息,这些都交给 Handler,Formatter 和 Filter 这些对象来处理。
同时该类也是可序列化的,可以序列化到网络和文件中。该类还可以和一个 ResourceBundle 对象绑定,实现消息字符串的本地化处理。描述了一个典型的自定义的 Handler 类的实现。在本文后面部分将会有一个实际的例子来介绍如何实现一个Android JDK日志处理类。
【编辑推荐】