一 为何要替换成log4j2
1.1 log4j2的优点
log4j2使用了两种方式记录日志:asyncappender和asynclogger。
1.asyncappender使用队列异步记录日志,但是一旦队列已满,appender线程需要等待。
2.asynclogger是采用disruptor,通过环形队列无阻塞队列作为缓冲,多生产者多线程的竞争是通过cas实现,无锁化实现,可以降低极端大的日志量时候的延迟尖峰,disruptor 可是号称一个线程里每秒处理600万订单的高性能队列。
注意的是: 使用asynclogger才会使用disruptor提高性能。如果使用的asyncappender,则使用的是类似logback一样的队列的方式做异步记录。
1.2 log4j2.xml如何读取application.yml中属性值
1.2.1 操作步骤
1.在application.properties 或者application.yml文件中配置
patcher.log=/data350/fengqxlogfile/patcher
2.编写监听器
@component public class loggerlistener implements applicationlistener<applicationevent>, ordered { @override public void onapplicationevent(applicationevent applicationevent) { if (applicationevent instanceof applicationenvironmentpreparedevent) { configurableenvironment environment = ((applicationenvironmentpreparedevent) applicationevent).getenvironment(); string filepath = environment.getproperty("patcher.log"); if (stringutils.isnotempty(filepath)) { system.err.println("=================" + filepath); system.setproperty("patcher.log", filepath); } } } @override public int getorder() { // 当前监听器的启动顺序需要在日志配置监听器的前面,所以此处减 1 return loggingapplicationlistener.default_order - 1; }
3.在 /src/main/resources/meta-inf/spring.factories进行加载监听器
org.springframework.context.applicationlistener=com.longze.patcher.listener.myloggerlistener
4.log4j2.xml进行使用配置是路径
1.3 log4j&slf4j&log4j2需要的导入的包
log4j实例:
import org.apache.log4j.logger; private static final logger logger = logger.getlogger(x.class);
slf4j实例:
import org.slf4j.logger; import org.slf4j.loggerfactory; private static final logger logger = loggerfactory.getlogger(x.class);
log4j2的使用:
import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger; private static final logger logger = logmanager.getlogger(x.class);
1.4 整合log4j2需要引入的依赖与排除依赖
1.引入依赖
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupid>org.apache.logging.log4j</groupid> <artifactid>log4j-slf4j-impl</artifactid> <version>2.17.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --> <dependency> <groupid>org.apache.logging.log4j</groupid> <artifactid>log4j-api</artifactid> <version>2.17.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupid>org.apache.logging.log4j</groupid> <artifactid>log4j-core</artifactid> <version>2.17.1</version> </dependency> <dependency> <groupid>com.imax</groupid> <artifactid>disruptor</artifactid> <version>2.17.1</version> </dependency> </dependencies>
排除jar包:
到此这篇关于springboot将logback替换成log4j2的操作步骤的文章就介绍到这了,更多相关springboot logback替换成log4j2内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论