欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

這篇文章主要介紹JDK日志框架之如何自定義日志Formatter,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

目前創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、礦區(qū)網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

JDK日志可以被格式化為一定格式的文本,也可以成為 XML 或者 Html 這樣標(biāo)準(zhǔn)的格式。這取決于 Formatter 類的具體實現(xiàn)。 Formatter 抽象類提供了 format 成員函數(shù)用于擴展。一個典型的自定義 Formatter 類實現(xiàn)如清單 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 方法提供了默認(rèn)的將日志記錄本地化和格式化的方法。它還能支持 java.text 風(fēng)格的文本格式化,這只需要在調(diào)用 Logger 對象的 setMessage 方法設(shè)定 java.text 風(fēng)格的格式字符串,同時通過 setParameters 方法設(shè)置參數(shù),這樣 formatMessage 將會根據(jù)所設(shè)置的 java.text 風(fēng)格的格式字符串來格式化日志消息。總之,formatMessage 方法方便了子類格式化字符串。使子類只需要定義輸出文本的格式而無需考慮本地化等問題。

自定義日志消息級別

JDK日志框架默認(rèn)提供了 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 類

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


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

自由的日志配置

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

清單 5 動態(tài)配置 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.FINEST);   ...   }

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

清單 6 jdk Logger 配置文件

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

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

# 設(shè)置日志對象的基本輸出級別

com.xyz.fOO.level = INFO

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

java.util.logging.ConsoleHandler.level = SEVERE

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

java.util.logging.ConsoleHandler.level = INFO

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

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

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

以上是“JDK日志框架之如何自定義日志Formatter”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前文章:JDK日志框架之如何自定義日志Formatter
轉(zhuǎn)載源于:http://www.chinadenli.net/article4/gcchie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序手機網(wǎng)站建設(shè)微信公眾號自適應(yīng)網(wǎng)站虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)