java中的日志log

JDK自带的log


一、创建Logger对象

static Logger getLogger(String name) 
          为指定子系统查找或创建一个 logger。 
static Logger getLogger(String name, String resourceBundleName) 
          为指定子系统查找或创建一个 logger。 
注意:name是Logger的名称,当名称相同时候,同一个名称的Logger只创建一个。

二、Logger的级别

比log4j的级别详细,全部定义在 java.util.logging.Level里面。
各级别按降序排列如下:
  • SEVERE(最高值)
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST(最低值)
此外,还有一个级别 OFF,可用来关闭日志记录,使用级别 ALL 启用所有消息的日志记录。

logger默认的级别是INFO,比INFO更低的日志将不显示。
Logger的默认级别定义是在jre安装目录的lib下面。
# Limit the message that are printed on the console to INFO and above. 
java.util.logging.ConsoleHandler.level = INFO

三、Logger的Handler

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

四、Logger的Formatter

Formatter 为格式化 LogRecords 提供支持。 
一般来说,每个日志记录 Handler 都有关联的 Formatter。Formatter 接受 LogRecord,并将它转换为一个字符串。 
有些 formatter(如 XMLFormatter)需要围绕一组格式化记录来包装头部和尾部字符串。可以使用 getHeader 和 getTail 方法来获得这些字符串。
 
LogRecord 对象用于在日志框架和单个日志 Handler 之间传递日志请求。
LogRecord(Level level, String msg) 
          用给定级别和消息值构造 LogRecord。
 
java.util.logging.Formatter 
  java.util.logging.SimpleFormatter 
  java.util.logging.XMLFormatter

例子

public class T {
	
	public static void main(String[] args) throws IOException {
		Logger log = Logger.getLogger("testjava");
		log.setLevel(Level.INFO);
		Logger log1 = Logger.getLogger("testjava");
//		System.out.println(log==log1);
		
		Logger log2 = Logger.getLogger("java2.test");
//		log2.setLevel(Level.WARNING);
		
		//2.start
		ConsoleHandler ch = new ConsoleHandler();
		ch.setLevel(Level.ALL);
		log.addHandler(ch);
		FileHandler fh = new FileHandler("d:/testlinjlog%g.log");
		fh.setLevel(Level.INFO);
		fh.setEncoding("utf-8");
		fh.setFormatter(new MyTestLogHander());
		log.addHandler(fh);
		log2.addHandler(fh);
		
		//end
		log.info("aaa");
		log2.info("bbb");
		log2.fine("ccc");
	}

}

class MyTestLogHander extends Formatter {

	@Override
	public String format(LogRecord record) {
		return record.getLoggerName()+" : "+record.getLevel()+" : "+record.getMessage()+"\n";
	}
	
}


另外见:http://lavasoft.blog.51cto.com/62575/184492

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值