天天看點

【java】java自帶的java.util.logging.Logger日志功能

偶然翻閱到一篇文章,注意到Java自帶的Logger日志功能,特地來細細的看一看,記錄一下。

1.Java自帶的日志功能,預設的配置

  ①Logger的預設配置,位置在JRE安裝目錄下lib中的logging.properties中

  ②logging.properties日志檔案内容如下:

【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能

View Code

  關于日志檔案中,需要關注的第一點是:

  

【java】java自帶的java.util.logging.Logger日志功能

  需要關注的第二點是:

【java】java自帶的java.util.logging.Logger日志功能

  需要關注的第三點是:

【java】java自帶的java.util.logging.Logger日志功能

  需要關注的第四點是:

【java】java自帶的java.util.logging.Logger日志功能

2.java.util.logging.Level類設定了日志級别類的設定

可以從API看出來,出了以下的Level各個級别,還有OFF和ALL兩個級别。

如果設定為Level.INFO級别的話,日志隻會顯示INFO以及以上的級别。

 

【java】java自帶的java.util.logging.Logger日志功能

 3.Logger的簡單使用

首先明确一點,java.util.logging.Logger的初始化方法

name代表你的Logger名稱,如果指定getLogeger相同名稱,則僅會建立一個對象

name代表你的Logger名稱,resourceBundleName代表本地化的Logger名稱,也就是記錄到本地磁盤的日志檔案中,每一條Logger的名稱

接下來,看看效果:

【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能

由此,可以證明,①設定的日志級别僅能列印到本級别以及進階别的日志資訊;②同名的Logger僅會建立一個。

4.設定FileHandler,為日志本地化設定

【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能

控制台:

【注意】這裡控制台列印了兩遍相同的日志,是因為,java預設的已經設定了一個ConsoleHandler,但是這個級别是INFO級别的。

    而程式中有重新設定了一個新的ConsoleHandler,這個級别是ALL的,兩個不一樣,是以都執行了列印,是以列印了兩遍一模一樣的。

【java】java自帶的java.util.logging.Logger日志功能

 本地日志檔案:

【java】java自帶的java.util.logging.Logger日志功能

【注意】僅列印了一個日志,這個根據代碼日志級别就可以了解。

    關鍵日志檔案是XML格式的内容,是因為上面解釋了FileHandler的相關設定中,預設是XML格式

【java】java自帶的java.util.logging.Logger日志功能

【注意2】FileHandler指定日志檔案名稱,有以下的規範:

【java】java自帶的java.util.logging.Logger日志功能

 5.為本地化的日志檔案設定自定義的日志格式

java.util.logging.LogRecord;

java.util.logging.Formatter;

【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能
【java】java自帶的java.util.logging.Logger日志功能

=======================================到這裡,告一段落=========================================