成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDK日志框架之自定義日志Handler淺析

開發 后端
JDK日志框架之自定義日志Handler,表現了JDK日志框架不失其靈活性,可以定制自己所需要的Handler,將JDK日志按照自定義的需求輸出到不同的位置,同時可以自定義擴展,下面就詳細敘述如何自定義擴展這些組件。

自定義日志 Handler

所有的 Handler 類都是繼承自 java.util.logging.Handler 抽象類,該類結構圖 如圖  所示。

圖- Handler 類圖

Handler的類圖 

由該類圖可見,Handler 抽象類提供了抽象接口:publish, flush 和 close .這些接口提供了日志輸出的基本功能。同時 Handler 類保存了 Formatter,Filter 和 Level 對象用來控制日志輸出。因此,編寫自定義的Handler 類需要如下步驟:

1、繼承 Handler 抽象類

2、實現 publish,flush 和 close 方法。其中publish 方法是用于發布一條日志記錄。 flush 方法是清空內存緩沖區。 close 方法是當應用程序關閉的時候,釋放該 Handler 類所申請的資源(如文件,socket 等)

3、設置默認的 Formatter,Filter 和 Level 對象。必要的時候,可以在類的初始化時候讀取配置文件來設置這些參數。

一個典型的自定義 Handler 類實現如清單 1 所示。

清單 1 自定義 Handler 類

  1. public class MyHandler extends Handler {   
  2. private bOOlean doneHeader = false;   
  3.  
  4. public MyHandler() {   
  5. setLevel(Level.INFO);   
  6. setFilter(null);   
  7. setFormatter(new SimpleFormatter());   
  8. }   
  9.  
  10. _cnnew1@Override   
  11. public void close() throws SecurityException {   
  12. if (!doneHeader) {   
  13. output(getFormatter().getHead(this));   
  14. doneHeader = true;   
  15. }   
  16. output(getFormatter().getTail(this));   
  17. flush();   
  18. }   
  19.  
  20. @Override   
  21. public void flush() {   
  22. // 清空緩沖區  
  23. }   
  24.  
  25. @Override   
  26. public void publish(LogRecord record) {   
  27. if (!isLoggable(record)) {   
  28. return;   
  29. }   
  30. String msg = getFormatter().format(record);   
  31.  
  32. try {   
  33. if (!doneHeader ) {   
  34. output(getFormatter().getHead(this));   
  35. doneHeader = true;   
  36. }   
  37. output(msg);   
  38. } catch (Exception ex) {   
  39. reportError(null, ex, ErrorManager.WRITE_FAILURE);   
  40. }   
  41. }   
  42.  
  43. private void output(String message) {   
  44. // 實現日志輸出  
  45. }   
  46. }  


這里 reportError 方法是將日志類中的錯誤信息輸出到外界,這個是由 ErrorManager 類實現的,ErrorManager 類負責記錄日志框架中Handler 的錯誤,一般情況下是將該錯誤打印到控制臺中。具體的每條日志消息被JDK日志框架封裝成 LogRecord 對象,該類部分定義如 清單 2 所示。

清單 2 LogRecord 類定義

  1. public class LogRecord implements java.io.Serializable {   
  2. public String getLoggerName();   
  3. public void setLoggerName(String name);   
  4. public ResourceBundle getResourceBundle();   
  5. public void setResourceBundle(ResourceBundle bundle);   
  6. public Level getLevel();   
  7. public void setLevel(Level level);   
  8. public String getMessage();   
  9. public void setMessage(String message);   
  10. public Object[] getParameters();   
  11. public void setParameters(Object parameters[]);   
  12. public int getThreadID();   
  13. public void setThreadID(int threadID);   
  14. public long getMillis();   
  15. public void setMillis(long millis);   
  16. public Throwable getThrown();   
  17. public void setThrown(Throwable thrown);   
  18. ...   
  19. }  


由清單 2 可見,LogRecord 類包含了一個日志消息的級別、消息文本、時間、參數、線程等等所有的信息,這些都交給 Handler,Formatter 和 Filter 這些對象來處理。同時該類也是可序列化的,可以序列化到網絡和文件中。該類還可以和一個 ResourceBundle 對象綁定,實現消息字符串的本地化處理。

本文描述了一個典型的自定義的Handler 類的實現。那么現在你對JDK日志框架之自定義日志Handler是不是更加有感覺了呢?

【編輯推薦】

  1. Java虛擬機內部構成淺析
  2. Java中兩個特殊變量this和super 的使用
  3. 3.6.3 this關鍵字和構造方法的調用
  4. 5.7.8 null和this關鍵字
  5. Java學習筆記-JSF
責任編輯:仲衡 來源: chinaitlab
相關推薦

2009-07-07 14:32:47

JDK日志Formatter

2009-07-07 15:53:02

JDK日志

2009-07-07 15:14:56

JDK日志STAF

2009-07-07 13:45:52

JDK日志框架

2010-02-05 15:33:29

Android JDK

2020-11-25 09:10:39

Golang GinW

2009-07-07 16:13:39

JDK日志

2009-08-05 18:01:20

C#自定義異常處理

2023-07-28 09:26:43

GolangZap

2009-08-06 09:18:01

ASP.NET自定義控ASP.NET控件開發

2009-06-17 16:00:03

Hibernate自定

2011-06-20 16:54:40

Qt Widget model

2022-05-24 07:39:09

MySQL數據庫日志

2021-02-18 07:46:07

日志框架

2009-08-06 17:13:56

ASP.NET自定義控

2009-07-28 09:32:41

ASP.NET自定義控

2009-08-10 14:16:59

ASP.NET自定義控

2009-08-06 17:52:45

ASP.NET控件開發自定義控件

2009-07-20 13:47:08

iBATIS.NET字

2009-06-25 14:53:35

自定義UI組件JSF框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一级 | 99re在线视频观看 | 国产高清一区二区三区 | 欧美一级在线观看 | 一区欧美| 国产美女在线看 | 国产精品久久久久久福利一牛影视 | se婷婷 | 黄色电影在线免费观看 | 国产在线观 | 午夜成人免费电影 | 欧美精品一区在线发布 | 久久国产高清视频 | 99视频在线免费观看 | 国产精品欧美一区二区三区不卡 | 午夜久久久| 成年免费大片黄在线观看一级 | 亚洲一区二区久久 | 色视频在线播放 | 一区二区三区在线观看免费视频 | 97人人爱| 亚洲国产日韩欧美 | 精品国产乱码一区二区三 | h视频在线免费观看 | 亚洲精品免费观看 | 精品国产乱码久久久久久蜜柚 | 亚洲成人一区二区三区 | 亚洲高清电影 | 久久精品国产久精国产 | 亚洲精品国产综合区久久久久久久 | 99re视频在线观看 | 美女视频一区 | 欧美国产激情二区三区 | 日韩视频中文字幕 | 精品国产一区二区国模嫣然 | 午夜男人天堂 | av性色全交蜜桃成熟时 | 日韩精品一区二区三区免费视频 | 亚洲精品大全 | 国产精品毛片久久久久久 | 亚洲国产成人av |