Log4j,实现加载自定义log4j.xml配置文件,并实现动态监听log4j.xml日志级别更新
?
?
?
?
在实际开发项目中,大部分产品的日志级别是ERROR级别的,因为这样可以提升系统运行效率,也可以防止INFO日志过多,日志文件很快被写满,以至于系统不能保存长时间的日志。进而造成定位问题不方便。
?
但是在ERROR级别下可能无法看到系统运行的详细日志信息。有时候需要查看INFO日志。所以最好有一种方法可以在系统运行过程中,动态修改日志级别。
?
实现动态修改日志级别,有两种办法:
?
1、利用Log4j提供的类和方法
2、自己实现监控log4j.xml文件更新,并实现动态配置更新。
?
?
?
?
?
?
?
一、利用Log4j提供的动态配置更新方法实现动态修改日志级别。
调用PropertyConfigurator或者DOMConfigurator类的configureAndWatch(String configFileName)或者configureAndWatch(String configFileName,long delay)
?
?
走读Log4j?DOMConfigurator类configureAndWatch方法源码,发现只要是调用configureAndWatch()方法,Log4j就会启动一个线程,根据入参delay或者默认的1分钟时间周期扫描指定的log4j.xml文件的更新情况,如果发现有更新则重新加载log4j.xml配置。
?
代码示例:
在D盘,Log4j文件夹下创建log4j.xml文件。内容如下:
?
?运行LogConfigurator的main方法,并随时修改D:\log4j\log4j.xml文件中定义的日志级别。
<level value="info" />
观察控制台打印的日志级别。
?