<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.6</version>
[]( )二、 全局异步模式
------------------------------------------------------------------
全局异步模式对日志的输出性能有非常大的提升,是官方推荐的异步日志输出方式。可以有两种方式为Spring Boot应用配置异步日志,第一种就是在应用启动类里面使用System.setProperty,代码如下:
@SpringBootApplication
public class BootLaunchApplication {
public static void main(String[] args) {
//下面语句使得Log4j2日志输出使用异步处理,减小输出日志对性能的影响
System.setProperty("Log4jContextSelector",
"org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
SpringApplication.run(BootLaunchApplication.class, args);
}
}
第二种是通过启动参数来设置全局异步日志
java -jar -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector boot-launch-1.0.jar
在以上配置完成之后,我们可以在log日志打印的位置下断点。当我们看到下图中红色边框部分的Log4j2-TF-1-AsyncLogger线程的时候,说明我们的全局异步日志配置成功了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/59cc6339e83b48a0b78da950548e958f.png)
[]( )三、异步/同步混合模式
--------------------------------------------------------------------
除了全局异步模式,slf4j还支持异步/同步混合模式。全局异步模式虽然是性能最好的日志输出方式,但是也是耗费主机资源最多的方式,如果你的应用服务器性能一般,你又想获得较好的日志输出性能,可以采用如下的方法。
> 采用异步/同步混合模式就不需要配置第二小节中的Log4jContextSelector
在log4j2 xml里面对Loggers配置进行改造,加入`AsyncLogger`也就是异步日志,只针对`com.zimug.boot.launch`包(假如已知这个包对处理性能要求比较高)下的代码产生的日志采用异步模式,其他的日志仍然使用同步模式。
<!-- 针对com.zimug.boot.launch包下面的日志采用异步日志 -->
<AsyncLogger name="com.zimug.boot.launch" level="debug" additivity="false">
<AppenderRef ref="CONSOLE" level="debug"/>
<AppenderRef ref="FILE-APPENDER" level="info"/>
</AsyncLogger>
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)
最新整理电子书
真题(都整理成文档,小部分截图)
[外链图片转存中…(img-Hia4l7uN-1714152420699)]
最新整理电子书
[外链图片转存中…(img-ZkXPkNfS-1714152420699)]