java.util.logging是java自帶的日誌處理系統,其功能不如log4j/logback強大,但能夠完成基本的日誌需求。java
另外,若是在一個項目中使用log4j, 而這個項目引用的第3方包也使用了log4j,它們之間的配置文件會互相覆蓋,致使不可預知的結果。若是第3方包將配置文件公開了,能夠經過修改log4j.properties來知足本身的需求(如hadoop),若是沒有公開,而是打包在jar包裏面了,那就儘可能不要再使用log4j了,logback也有相似問題。app
此時就能夠使用java.util.logging完成基本的日誌處理。maven
一、定義配置文件,文件名通常爲logging.properties,放在項目的根目錄下,若是是maven項目,則放在src/main/resources下。oop
handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler, java.util.logging.ConsoleHandler.level=WARNING java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.FileHandler.level=INFO java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter java.util.logging.FileHandler.limit=1024000 java.util.logging.FileHandler.count=10 java.util.logging.FileHandler.pattern=/Users/liaoliuqing/mylog3.log java.util.logging.FileHandler.append=true
關於這個配置文件,有個很大的坑,不能有多餘的空格,好比設定日誌級別是,INFO後面有一個空格,就會致使這個項無效,其它也相似。測試
二、在類中使用日誌
package com.lujinhong.demo.log4j; import java.util.logging.Logger; public class LoggerDemo { private static Logger LOG = null; public static void main(String[] args) { System.setProperty("java.util.logging.config.file", "logging.properties"); LOG = Logger.getLogger("com.lujinhong"); LOG.warning("測試信息"); LOG.info("hello"); } }
這裏也有個坑,搞了好久,setProperty必須放在LOG的賦值以前。orm
運行上面的程序,在console中輸出:xml
七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo mainhadoop
警告: 測試信息開發
在文件中輸出:
七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo main
警告: 測試信息
七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo main
信息: hello
一些注意事項:
一、除了在代碼中指定配置文件外,也能夠經過-Djava.util.logging.config.file=logging.properties指定。
甚至能夠在代碼中指定log相關的全部配置,而不使用配置文件,但不推薦這種方式。
二、文件的默認輸出格式爲XML,必須改,很醜,真不知道java的開發人員怎麼想的。
三、其它的配置項都比較直觀,其中count那個是指最多生成多少個日誌文件。