您好,登錄后才能下訂單哦!
這篇文章主要介紹JDK日志框架之如何自定義日志Formatter,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
JDK日志可以被格式化為一定格式的文本,也可以成為 XML 或者 Html 這樣標準的格式。這取決于 Formatter 類的具體實現。 Formatter 抽象類提供了 format 成員函數用于擴展。一個典型的自定義 Formatter 類實現如清單 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 方法提供了默認的將日志記錄本地化和格式化的方法。它還能支持 java.text 風格的文本格式化,這只需要在調用 Logger 對象的 setMessage 方法設定 java.text 風格的格式字符串,同時通過 setParameters 方法設置參數,這樣 formatMessage 將會根據所設置的 java.text 風格的格式字符串來格式化日志消息。總之,formatMessage 方法方便了子類格式化字符串。使子類只需要定義輸出文本的格式而無需考慮本地化等問題。
自定義日志消息級別
JDK日志框架默認提供了 SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST 這幾種日志級別。如果我們需要定義更多的日志級別,只需要繼承 java.util.logging.Level 類,然后將自定義的級別作為靜態成員變量聲明即可。一個典型的自定義的消息類如清單 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); ... // 其他自定義級別 }
權重值 value 是一個整型數。在默認的 JDK日志級別中,SEVERE 的權重是 1000,FINEST 是 300,可以根據具體的需求來定義每個自定義級別的權重。例如在 WARNING 和 INFO 級別中加入一個新的級別,該級別的權重必須介于 800 到 900 之間。
自由的日志配置
和其他日志框架一樣,JDK日志框架同樣提供了強大的日志配置功能。你既可以通過代碼進行動態配置,也可以通過配置文件來實現自由靈活的配置。通過代碼動態配置,應用程序可以實現在運行過程中改變日志類的配置,動態地改變不同的配置組合。一個簡單的動態配置代碼如清單 5 所示。
清單 5 動態配置 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); ... }
配置文件的配置方法則同樣靈活多變。它主要是在應用程序啟動時根據一個指定的配置文件來設置日志對象。在配置文件中,日志對象是由其名稱來標識的。一個典型的日志配置文件如清單 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 程序的啟動參數中,我們可以通過添加 -Djava.util.logging.config.file 參數來定義配置文件路徑,一個典型的Java 命令行如下:
java -Djava.util.logging.config.file=logger.properties -cp . Mainclass
JDK日志框架之自定義日志Formatter就介紹到這里,這些組件要使用其實只需要能夠在 classpath 中找到即可。
以上是“JDK日志框架之如何自定義日志Formatter”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。