2019独角兽企业重金招聘Python工程师标准>>>
log4j2是log4j的替代产品,log4j2支持异步读写,在日志的读写性能上有很大的提高。相应的也就提高了系统的吞吐量。log4j没有更新了,已经被抛弃,所以在新的项目中完全可以抛弃log4j,然后采用log4j2或者logback作为日志实现方案。
本文主要是记录log4j2与目前常采用的Spring+Spring MVC+Mybatis+druid架构的web项目环境的集成。关于log4j2的新特性和功能,请参考官网或者参阅他人博客。
第一步:引入log4j2相关依赖
2.8.1
org.apache.logging.log4j
log4j-core
${log4j2.version}
org.apache.logging.log4j
log4j-jcl
${log4j2.version}
org.apache.logging.log4j
log4j-slf4j-impl
${log4j2.version}
com.lmax
disruptor
3.3.6
如果不需要使用log4j2的异步logger则无需引入disruptor的依赖,在项目实现中,为了不造成系统强依赖于某一个log实现 框架,项目统一采用slf4j做为日志接口。
第二步:修改mybatis的log实现
在实际项目总都大致写个mybatis-config.xml的配置文件,我们需要将里面的logImpl的实现改成log4j2
文件内容如下:
第三步:配置druid数据连接池filter
druid配置片段如下:
第四步:创建log4j2.xml配置文件
log4j2.xml配置文件需要放到maven项目的resource下,log4j2.xml的配置文件如下:
logs/
日志文件中配置,将logger都配置成了Async异步logger,如果想要同步日志,则将AsyncLogger改写成logger,如果需要使用json格式输出则可以配置log4j2出处json
总结
整合的其实只有几步,但是需要注意几点:
(1) mybatis的版本必须至少到3.2.8,否则是无法在mybatis中使用log4j2的
(2) druid的版本虽然没有具体测试过最低版本是那个,但是大概的最低版本是1.0.23或者是1.0.24。因为以前我在使用druid的时候是不能直接配置log4j2的,在2016年初的时候我在githup上反馈过,后来发布新版本才可以直接使用log4j2
(3) 如果使用的web环境是servlet 2.x,则还需log4j2的web过滤器和监听器配置到web.xml中,然后引入log4j2的web模块,因此建议新的项目都是用servlet3.0减少不必要的配置