目录
认识properties
使用properties编写日志配置文件
认识properties
之前的学习中,我们学习了使用XML配置文件,但是XML的读取实在有些麻烦。那有没有更简单的方式来配置文件呢?
答案是:使用Properties配置文件
在这里了解properties的主要目的是为了在后面更好地配置日志打印器JUL
properties文件就是直接以.properties结尾的文件
这种文件配置方式很简单,格式为:
配置值=配置值
例如:
name=Test
desc=Description
这个结构非常像map,等号左边为key,右边为value
同样,我们也可以将properties文件读到map里面
Propertise properties = new Properties();
//这里的propertise就可以当做一个map使用
propertise.load(new FileInputStream("test.properties"));
//取一个properties
properties.get(name);
//另一种取的方法,类似map
properties.getProperties("name","xxx");//如果找到了name的配置,就使用,否则默认使用xxx
//插入一个properties
properties.put("numnber","1");
在这里,Properties类继承了Hashtable,和HashMap不同的是,Hashtable不允许插入的值的value为空
可以使用输出流保存properties文件
properties.store(new FileOutputStream("test"));
其实,我们的系统也有自己的properties文件,可以通过System.getProperties来查看系统的参数:
System.getProperties().forEach((k,v)->System.out.println(k+":"+v));
得到结果:
os.arch:amd64
user.country:CN
java.vm.specification.version:1.8
...
可以得到系统的信息
使用properties编写日志配置文件
在上一章中:Java学习路线:JUL日志系统(一)日志框架介绍-CSDN博客
我们学习了如何使用日志处理器修改日志的级别等
而使用properties可以直接规定使用的日志处理器和默认日志级别
# rootLogger的默认处理器为:
handlers = java.util.logging.ConsoleHandler
# rootLoggrt的默认日志级别为
.level=CONFIG
那么, 怎么将配置应用到日志中呢?
可以使用一个日志管理器LogManager来配置
LogManager logManager = LogManager.getLogManager();
logManager.readConfiguration(new FileInputStream("test.properties"));
这样就成功将properties中的配置应用到日志系统中了
同样,也可以通过properties修改ConsoleHandler的默认配置:
# 指定默认的日志级别
java.util.logging.ConsoleHandler.level=ALL
//指定默认日志消息格式
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
//指定默认的字符集
java.util.logging.ConsoleHandler.encoding=UTF-8
到底为什么通过设置properties就能改变ConsoleHandler的设置呢?
打开ConsoleHandler的源码,可以发现其实他调用了getProperty方法来读取了配置文件
如果我们没有进行相应的配置,就会自动使用默认值
这也解释了为什么日志处理器默认的日志打印权限是INFO