自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JDK日志框架之自定義日志Formatter

開發(fā) 后端
JDK日志框架之自定義日志Formatter的實現(xiàn),JDK日志可以被格式化為一定格式的文本,也可以成為XML或者Html這樣標準的格式。本文講給你介紹這些具體的內(nèi)容。

JDK日志框架之自定義日志Formatter的出現(xiàn)又是一個閃亮的點,他是如何給我們帶來興奮地感覺呢?

JDK日志可以被格式化為一定格式的文本,也可以成為 XML 或者 Html 這樣標準的格式。這取決于 Formatter 類的具體實現(xiàn)。 Formatter 抽象類提供了 format 成員函數(shù)用于擴展。一個典型的自定義 Formatter 類實現(xiàn)如清單 3 所示:

清單 3 LogRecord 類定義

  1. public class MyFormatter extends Formatter {   
  2. private final String lineSeparator = System.getProperty("line.separator");   
  3. @Override   
  4. public String format(LogRecord record) {   
  5. StringBuffer sb = new StringBuffer();   
  6. String message = formatMessage(record);   
  7. sb.append(record.getLevel().getLocalizedName());   
  8. sb.append(message);   
  9. sb.append(lineSeparator);   
  10. if (record.getThrown() != null) {   
  11. try {   
  12. StringWriter sw = new StringWriter();   
  13. PrintWriter pw = new PrintWriter(sw);   
  14. record.getThrown().printStackTrace(pw);   
  15. pw.close();   
  16. sb.append(sw.toString());   
  17. } catch (Exception ex) {   
  18. }   
  19. }   
  20. return sb.toString();   
  21. }   
  22. }  

其中 formatMessage 方法提供了默認的將日志記錄本地化和格式化的方法。它還能支持 java.text 風格的文本格式化,這只需要在調(diào)用 Logger 對象的 setMessage 方法設定 java.text 風格的格式字符串,同時通過 setParameters 方法設置參數(shù),這樣 formatMessage 將會根據(jù)所設置的 java.text 風格的格式字符串來格式化日志消息??傊?,formatMessage 方法方便了子類格式化字符串。使子類只需要定義輸出文本的格式而無需考慮本地化等問題。

自定義日志消息級別

JDK日志框架默認提供了 SEVERE,WARNING,INFO,CONFIG,F(xiàn)INE,F(xiàn)INER,F(xiàn)INEST 這幾種日志級別。如果我們需要定義更多的日志級別,只需要繼承 java.util.logging.Level 類,然后將自定義的級別作為靜態(tài)成員變量聲明即可。一個典型的自定義的消息類如清單 4 所示。

清單 4 自定義 Level 類

  1. public class MyLevel extends Level {   
  2.  
  3. protected MyLevel(String name, int value) {   
  4. super(name, value);   
  5. }   
  6.  
  7. public static final Level Level1 = new MyLevel("Level1", 123);   
  8. ... // 其他自定義級別  
  9. }  


權重值 value 是一個整型數(shù)。在默認的 JDK日志級別中,SEVERE 的權重是 1000,F(xiàn)INEST 是 300,可以根據(jù)具體的需求來定義每個自定義級別的權重。例如在 WARNING 和 INFO 級別中加入一個新的級別,該級別的權重必須介于 800 到 900 之間。

自由的日志配置

和其他日志框架一樣,JDK日志框架同樣提供了強大的日志配置功能。你既可以通過代碼進行動態(tài)配置,也可以通過配置文件來實現(xiàn)自由靈活的配置。通過代碼動態(tài)配置,應用程序可以實現(xiàn)在運行過程中改變?nèi)罩绢惖呐渲?,動態(tài)地改變不同的配置組合。一個簡單的動態(tài)配置代碼如清單 5 所示。

清單 5 動態(tài)配置 Logger 對象

  1. public static void main(String[] args){   
  2. Handler fh = new FileHandler("%t/wombat.log");   
  3. Logger.getLogger("logname").addHandler(fh);   
  4. Logger.getLogger("com.wombat").setLevel("com.wombat",Level.FINEST);   
  5. ...   
  6. }  

配置文件的配置方法則同樣靈活多變。它主要是在應用程序啟動時根據(jù)一個指定的配置文件來設置日志對象。在配置文件中,日志對象是由其名稱來標識的。一個典型的日志配置文件如清單 6 所示。

清單 6 jdk Logger 配置文件

# 設置日志對象的 Handler,日志對象的名稱是 com.xyz.fOO

com.xyz.fOO.handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

# 設置日志對象的基本輸出級別

com.xyz.fOO.level = INFO

#FileHandler 只允許輸出 SEVERE 以上級別的JDK日志

java.util.logging.ConsoleHandler.level = SEVERE

#ConsoleHandler 允許輸出 INFO 以上級別的JDK日志

java.util.logging.ConsoleHandler.level = INFO

當設置好一個日志配置文件后,在Java 程序的啟動參數(shù)中,我們可以通過添加 -Djava.util.logging.config.file 參數(shù)來定義配置文件路徑,一個典型的Java 命令行如下:

java -Djava.util.logging.config.file=logger.properties -cp . Mainclass

JDK日志框架之自定義日志Formatter就介紹到這里,這些組件要使用其實只需要能夠在 classpath 中找到即可。
 

【編輯推薦】

  1. Java程序員面試必備的32個要點
  2. 淺談Java線程的生命周期
  3. 關于Java繼承的一些復習
  4. 實現(xiàn)Java中對象比較的兩個方法
  5. 3.6.3 this關鍵字和構造方法的調(diào)用
責任編輯:仲衡 來源: 網(wǎng)易博客
相關推薦

2009-07-07 14:00:25

JDK日志Handler

2009-07-07 15:53:02

JDK日志

2010-02-05 15:33:29

Android JDK

2020-11-25 09:10:39

Golang GinW

2023-07-28 09:26:43

GolangZap

2009-08-05 18:01:20

C#自定義異常處理

2009-07-07 15:14:56

JDK日志STAF

2021-02-18 07:46:07

日志框架

2021-03-15 08:34:26

FormatterSpringFormatterRe

2009-06-25 14:53:35

自定義UI組件JSF框架

2009-07-07 13:45:52

JDK日志框架

2021-01-14 19:04:36

框架數(shù)據(jù)庫mybatis

2021-10-26 10:07:02

鴻蒙HarmonyOS應用

2011-08-02 11:17:13

iOS開發(fā) View

2022-06-30 14:02:07

鴻蒙開發(fā)消息彈窗組件

2022-07-15 16:45:35

slider滑塊組件鴻蒙

2010-02-05 15:47:00

Android JDK

2010-01-06 10:38:16

Linux安裝JDK

2015-02-12 15:33:43

微信SDK

2015-02-11 17:49:35

Android源碼自定義控件
點贊
收藏

51CTO技術棧公眾號