欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

例说java常用日志管理 博客分类: java log 

程序员文章站 2024-03-21 21:30:16
...

   关于java的日志,我们有很多种,常见的有commons-loging、log4j、slf4j等,实际上jdk本身带有一套日志java.util.logging.Logger。现在对这些日志的用法做一个小总结。

 

一、jdk自带的日志管理类

 

import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

/**
 * java自带日志管理
 * @author  Walter.Huang
 * @create date 2014-12-15
 */
public class LogMain {

	public static void main(String[] args) throws Exception {
		Logger log1=Logger.getLogger("javaLog");
		Logger log2=Logger.getLogger("javaLog");
		
		System.out.println(log1==log2); //同名日志获取到的对象为同一个,故打印“true”
		
		log2=Logger.getLogger("javaLog2");//重置一个
		
		/*
		日志级别,使用Level类承载,从高到低依次是:SEVERE(最高值)、WARNING、INFO、CONFIG、FINE、FINER、FINEST(最低值) 
		此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。 
		logger默认的级别是INFO,比INFO更低的日志将不显示。 
		*/
		log1.setLevel(Level.INFO);
		
		/*
		Handler 对象从 Logger 中获取日志信息,并将这些信息导出。
		例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。 
		可通过执行 setLevel(Level.OFF) 来禁用 Handler,并可通过执行适当级别的 setLevel 来重新启用。 
		Handler 类通常使用 LogManager 属性来设置 Handler 的 Filter、Formatter 和 Level 的默认值。 
		java.util.logging.Handler 
	  	java.util.logging.MemoryHandler 内存 
	  	java.util.logging.StreamHandler  流
	    java.util.logging.ConsoleHandler 控制台
	    java.util.logging.FileHandler 文件
	    java.util.logging.SocketHandler 网络
		*/
		ConsoleHandler consoleHandler = new ConsoleHandler(); //控制台
		log1.addHandler(consoleHandler);

		FileHandler fileHandler = new FileHandler("C:/log/log.log");//文件
		
		/*
		 默认的日志格式为xml格式,结构太复杂,可以自定义
		 */
		fileHandler.setFormatter(new LogHandler());
		log2.addHandler(fileHandler);
		
		/*
		 写日志
		 */
		log1.info("日志1");
		log2.info("日志2");
		log2.finest("日志不见");//日志级别是Level.INFO比FINEST级别高,所以不会写日志
		
	}

}


/**
 * Formatter自定义类
 * 类的说明
 * @author  Walter.Huang
 * @create date 2014-12-15
 */
class LogHandler extends Formatter{
	@Override
	public String format(LogRecord record) {
		return record.getLevel()+":"+record.getMessage()+"\n";
	}
}

 二、common-loging

相关标签: log