【转】 java.util.logging.Logger以配置文件方式控制日志输出

        简单的实现了下利用JDK中类java.util.logging.Logger来记录日志。主要在于仿照log4j方式用配置文件来配置日志的输出。网络上关于如何使用java.util.logging.Logger的文章很多,但是没有完整的如何通过配置配置文件来达到控制日志输出的资料。 


        1、 首先封装了个LogManager。该类的主要作用就是static块中的代码,意在读取properties文件,初始化日志属性

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Logger;

public class LogManager {

	// 初始化LogManager
	static {
		// 读取配置文件
		ClassLoader cl = LogManager.class.getClassLoader();
		InputStream inputStream = null;
		if (cl != null) {
			inputStream = cl.getResourceAsStream("log.properties");
		} else {
			inputStream = ClassLoader
					.getSystemResourceAsStream("log.properties");
		}
		java.util.logging.LogManager logManager = java.util.logging.LogManager
				.getLogManager();
		try {
			// 重新初始化日志属性并重新读取日志配置。
			logManager.readConfiguration(inputStream);
		} catch (SecurityException e) {
			System.err.println(e);
		} catch (IOException e) {
			System.err.println(e);
		}
	}

	/**
	 * 获取日志对象
	 * @param clazz
	 * @return 
	 */
	public static Logger getLogger(Class clazz) {
		Logger logger = Logger
				.getLogger(clazz.getName());
		return logger;
	}

}


        2、在需要记录日志的地方,通过LogManager.getLogger()方法得到Logger对象,然后调用其记录日志的方法记录日志。这里,我记录错误堆栈信息是用的 log(Level level, String msg, Throwable thrown) 

      #Level的五个等级SEVERE(最高值) 、WARNING 、INFO 、CONFIG 、FINE 、FINER 、FINEST(最低值)  。这个不同于log4j
      
      #为 Handler 指定默认的级别(默认为 Level.INFO)。 
      java.util.logging.ConsoleHandler.level=INFO
      # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.SimpleFormatter)。 
      java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
      
      # 为 Handler 指定默认的级别(默认为 Level.ALL)。 
      java.util.logging.FileHandler.level=INFO
      # 指定要使用的 Formatter 类的名称(默认为 java.util.logging.XMLFormatter)。 
      java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
      # 指定要写入到任意文件的近似最大量(以字节为单位)。如果该数为 0,则没有限制(默认为无限制)。 
      # 这样配置后还有一个缺陷,日志文件累积到指定的大小时,将会被重新创建,也就是之前的日志信息会丢失,但是不设置大小的话会导致单个文件过大。
      java.util.logging.FileHandler.limit=1024000
      # 指定有多少输出文件参与循环(默认为 1)。 
      java.util.logging.FileHandler.count=1
      # 为生成的输出文件名称指定一个模式。有关细节请参见以下内容(默认为 "%h/java%u.log")。 
      java.util.logging.FileHandler.pattern=C:/SSLog%u.log
      # 指定是否应该将 FileHandler 追加到任何现有文件上(默认为 false)。 
      java.util.logging.FileHandler.append=true
      
      handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler


    注:  默认情况下,JDK会读取jre目录下的lib/logging.properties配置文件,可以在启动JVM的时候指定系统属性 
    java.util.logging.config.file 指定配置文件

你可能感兴趣的:(java,logging)