偶然翻閱到一篇文章,注意到Java自帶的Logger日志功能,特地來細細的看一看,記錄一下。
1.Java自帶的日志功能,預設的配置
①Logger的預設配置,位置在JRE安裝目錄下lib中的logging.properties中
②logging.properties日志檔案内容如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
View Code
關于日志檔案中,需要關注的第一點是:
需要關注的第二點是:
需要關注的第三點是:
需要關注的第四點是:
2.java.util.logging.Level類設定了日志級别類的設定
可以從API看出來,出了以下的Level各個級别,還有OFF和ALL兩個級别。
如果設定為Level.INFO級别的話,日志隻會顯示INFO以及以上的級别。
3.Logger的簡單使用
首先明确一點,java.util.logging.Logger的初始化方法
name代表你的Logger名稱,如果指定getLogeger相同名稱,則僅會建立一個對象
name代表你的Logger名稱,resourceBundleName代表本地化的Logger名稱,也就是記錄到本地磁盤的日志檔案中,每一條Logger的名稱
接下來,看看效果:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
由此,可以證明,①設定的日志級别僅能列印到本級别以及進階别的日志資訊;②同名的Logger僅會建立一個。
4.設定FileHandler,為日志本地化設定
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
控制台:
【注意】這裡控制台列印了兩遍相同的日志,是因為,java預設的已經設定了一個ConsoleHandler,但是這個級别是INFO級别的。
而程式中有重新設定了一個新的ConsoleHandler,這個級别是ALL的,兩個不一樣,是以都執行了列印,是以列印了兩遍一模一樣的。
本地日志檔案:
【注意】僅列印了一個日志,這個根據代碼日志級别就可以了解。
關鍵日志檔案是XML格式的内容,是因為上面解釋了FileHandler的相關設定中,預設是XML格式
【注意2】FileHandler指定日志檔案名稱,有以下的規範:
5.為本地化的日志檔案設定自定義的日志格式
java.util.logging.LogRecord;
java.util.logging.Formatter;
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
=======================================到這裡,告一段落=========================================