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>

这种降级性能提升是巨大的,能极大地提升服务端响应速度

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐