java.util.logging使用筆記2


 

java.util.logging是java自帶的日志處理系統,其功能不如log4j/logback強大,但可以完成基本的日志需求。

另外,如果在一個項目中使用log4j, 而這個項目引用的第3方包也使用了log4j,它們之間的配置文件會互相覆蓋,導致不可預知的結果。如果第3方包將配置文件公開了,可以通過修改log4j.properties來滿足自己的需求(如hadoop),如果沒有公開,而是打包在jar包里面了,那就盡量不要再使用log4j了,logback也有類似問題。

此時就可以使用java.util.logging完成基本的日志處理。

1、定義配置文件,文件名一般為logging.properties,放在項目的根目錄下,如果是maven項目,則放在src/main/resources下。

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后面有一個空格,就會導致這個項無效,其它也類似。

 

2、在類中使用

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的賦值之前。

運行上面的程序,在console中輸出:

七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo main

警告: 測試信息

在文件中輸出:

七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo main
警告: 測試信息
七月 24, 2015 10:59:58 上午 com.lujinhong.demo.log4j.LoggerDemo main
信息: hello

 

一些注意事項:

1、除了在代碼中指定配置文件外,也可以通過-Djava.util.logging.config.file=logging.properties指定。

甚至可以在代碼中指定log相關的所有配置,而不使用配置文件,但不推薦這種方式。

2、文件的默認輸出格式為XML,必須改,很丑,真不知道java的開發人員怎么想的。

3、其它的配置項都比較直觀,其中count那個是指最多生成多少個日志文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM