springcloud--日志链路追踪之log4j2

传统的log4j,同步打印日志,同时输出许多条日志记录,会采用抢占式,谁先得到输出机会,先打印某条日志。

log4j2,异步打印日志,业务线程将日志输出存放到一个无锁化环形队列(RingBuffer),log4j2的异步线程会从该队列中读取日志,并进行持久化。该环形队列,可以设置缓冲区大小,以及队列满了后,将debug/info/error/trace中某个级别的日志进行剔除。

使用:

maven依赖


            org.springframework.boot
            spring-boot-starter-log4j2
        

        
            com.lmax
            disruptor
            3.3.6
        

application.properties中配置

logging.config=classpath:log4j2.xml

配置log4j2.xml文件

配置 log4j2.component.properties

# 环形队列的大小
AsyncLogger.RingBufferSize=10000
#
AsyncLoggerConfig.RingBufferSize=10000
# 自动降级--丢弃日志
log4j2.AsyncQueueFullPolicy=Discard
# 队列满后丢弃debug级别的日志
log4j2.DiscardThreshold=DEBUG
以上仅个人学习的一点理解,如有误,请各位大佬指教。。

你可能感兴趣的:(互联网架构)