Java logging使用:如何记录,如何控制记录格式,如何集合到一个日志文件中,以及避免出现多个日志文件,即log.1

Java logging使用:

1、如何记录:


Logger log = Logger.getLogger("Lab4_1160300522_log"); 

Logger log = Logger.getLogger("Lab4_1160300522_log");
log.setLevel(Level.INFO);
log.info(".....");

2、如何集合到一个日志文件中,

假设我们已经有一个log,也就是已经执行了Logger log = Logger.getLogger("Lab4_1160300522_log"); 

那么我们写一个函数来对这个log进行设置,控制它将log记录的信息输出到文件中;

public void initialLog(Logger log) throws IOException{
//	log.setLevel(Level.INFO); 
	FileHandler fileHandler = new FileHandler("src/log/Lab4_1160300522_log.log",true); 
//    fileHandler.setLevel(Level.INFO); 
    log.addHandler(fileHandler); 
    fileHandler.setFormatter(new SimpleFormatter());
}

3、如何控制记录格式,

我们可以看到文件中的格式就是控制台输出的格式,还有一个自带的XMLFormatter(),但是对用户来说更加不友好

假如你觉得SimpleFormatter的格式也不适合你,想自己控制记录的格式,那么可以自己写一个类Myformatter继承Formatter并重写format函数

class MyFormatter extends Formatter{

	@Override
	public String format(LogRecord record) {
		ZonedDateTime zdt = ZonedDateTime.ofInstant(record.getInstant(), ZoneId.systemDefault());
		String format = zdt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
	    
		return "Time-->"+format+"\n"+record.getMessage()+"\n";
	}
}

注:

A、其中的前两行代码是进行将record中得到的Instant进行变换,让他符合你所在的时区

B、除了提取record中Instant,Message参数,你还可以根据需要提取记录信息的类和方法等;

4、以及避免出现多个日志文件,即log.1

虽然你只添加了一个fileHandler,但是其目录下很可能会出现多个日志文件,这是因为之前添加文件未关闭导致,资源被锁死,再添加相同的fileHandler也会创建新的日志文件,可以在添加之前将所有的fileHandler关闭,代码如下

public void initialLog(Logger log) throws IOException{
	for(Handler h : log.getHandlers()) {
        h.close();
    }
//	log.setLevel(Level.INFO); 
	FileHandler fileHandler = new FileHandler("src/log/Lab4_1160300522_log.log",true); 
//    fileHandler.setLevel(Level.INFO); 
    log.addHandler(fileHandler); 
    fileHandler.setFormatter(new SimpleFormatter());
}



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值