java.util.logging使用笔记2

 

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那个是指最多生成多少个日志文件。

相关文章
相关标签/搜索