前言
由于log4j1.x用的是全局锁同步写log,大大影响了写日志的性能。所以决定把log4j1.x升级为log4j2.x,记录一下升级的过程和步骤。
log4j2.x性能较log4j1.x提升了10倍:
Log4j 2 包含了基于LMAX 分离库的下一代的异步日志系统,在多线程环境下,异步日志系统比 Log4j 1.x 和Logback提高了10倍性能提升(吞吐量和延迟率 )
依赖
删除原有的log4j1.x依赖,包括slf4j-log4j12,在有用到的地方通过pom文件exclude就好了。如下:
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
为了不影响代码,我们还需要引用log4j1.x到log4j2.x的过渡包,如下:
log4j-1.2-api-2.5.jar
log4j-api-2.5.jar
log4j-core-2.5.jar
disruptor-3.3.4.jar(用于异步输出log)
配置
删除原有的配置文件log4j.properties
添加配置文件log4j2.xml
具体配置信息忽略
彻底的异步方式
下面是官方给出的log4j2异步日志的效率
想要完全使用log4j2的异步方式输出日志,则需要在classpath路径下添加如下文件log4j2.component.properties
内容如下:
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
网友评论