logback日志降级策略-异步非阻塞队列

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>

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值