1 修改logback配置文件
1)在你的logback配置文件中,加上 scan="true",用于配合配置中心(spirng-cloud-config )实现手动降级开关;
logback会自动扫描配置文件的变更并更新,默认一分钟扫描一次,可以修改扫描周期;如果更改后的配置文件有语法错误,则会回退到之前的配置文件;
2)在你的logback配置文件中,引入异步非阻塞队列的logback实现 AsyncAppender
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="5 seconds" debug="true" >
......
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 这里指向你自己设置的Appender,例如你设置的RollingFileAppender或自定义的KafkaAppender-->
<appender-ref ref="FILE"/>
<!-- 设置异步阻塞队列的大小,为了不丢失日志建议设置的大一些,单机压测时100000是没问题的,应该不用担心OOM -->
<queueSize>100000</queueSize>
<!-- 设置丢弃DEBUG、TRACE、INFO日志的阀值,会保留WARN、ERROR级别,如果不设置的话默认保留队列中80%的日志 -->
<!-- <discardingThreshold>20000</discardingThreshold> -->
<!-- 设置队列入队时非阻塞,当队列满时会直接丢弃日志,但是对性能提升极大 -->
<neverBlock>true</neverBlock>
</appender>
......
</configuration>
可以异步写磁盘,也可以异步写Kafka,如果写Kafka,开个传送门:logback 自定义KafkaAppender
2 需要降级时,修改logback配置文件的root并发布,关闭你自己的Appender,打开 AsyncAppender
<root level="DEBUG">
<!--<appender-ref ref="FILE"/>-->
<appender-ref ref="ASYNC"/>
</root>
3 同理,关闭降级时,同样修改logback配置文件的root并发布,关闭 AsyncAppender,打开你自己的Appender
<root level="DEBUG">
<appender-ref ref="FILE"/>
<!--<appender-ref ref="ASYNC"/>-->
</root>
这种降级性能提升是巨大的,能极大地提升服务端响应速度