編輯:高級開發
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日志處理類。