log4j 详解异步日志的配置和测试
日志可以帮助我们分析故障原因,做些数据挖掘的工作。最简单的日志方法,就是自己写个写文件的方法,在需要打日志的时候调用下,但是这显然不可能在实际工程上用。还有个问题,就是频繁地打日志,会增加磁盘I/O,使得系统性能下降。这里用log4j这个库来部署一个含有日志管理的轻量级的系统,主要支持日志的异步写和等级分类的功能,完成最低限度的日志需求。
首先,我们建立一个Maven工程,并且在pom.xml文件里面引入log4j的依赖:
1
2
3
4
5
|
< dependency > < groupId >org.slf4j</ groupId > < artifactId >slf4j-log4j12</ artifactId > < version >1.7.2</ version > </ dependency > |
接着,我们在src/main/resources路径下面创建一个配置文件:log4j.xml
其实xml配置文件的内容是至关重要的,里面必须定义日志的等级、是否异步等属性。这里我通过截图来简单说明几个关键点。完整的配置文件会随这篇博客一起上传。
这里关于日志等级需要多解释一下,这里的日志等级默认是debug:
所以如果不像上图中利用日志过滤器来定义日志等级,那么最后ERROR日志的会写到INFO日志的文件里,导致日志管理混乱。所以需要来设置这个日志等级的问题。
这张图需要解释的不多,主要是异步日志的配置。
那么到这里,日志的配置基本就好了。而想要在程序里面引用直接就写成:
然后调用log.info,log.error等方法就可以写日志了。注意我们设了2KB的大小,因此日志会累计到2KB再去写。所以并不是实时的,但这样可以减少频繁的磁盘I/O,在压测的时候可以避免由于I/O所带来的CPU的损耗。
接着我们写一段简单的测试程序来验证我们的配置是否正确。
这段代码的功能很简单:迭代计数到10W,然后将10的倍数写到error日志里,非10的倍数写到info日志里面。运行该程序,就会在相应的文件里打印出响应的结果。具体的日志结果如下图:
需要注意的是,当天的日志不会马上加上日期,隔了一天后会显示日期(如何马上显示当天的日期,楼主还没搞定)。info和error日志中的内容如下:
可见,通过我们之前之前的配置,我们可以按照我们的意思来正确地打印日志。ok,就先写到这里。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/wangongxi/article/details/49686883