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
这种降级性能提升是巨大的,能极大地提升服务端响应速度