log4j2异步注意事项

一、log4j2异步类型

1) 使用标签

示例:

 


    

注意事项: 此类异步队列是BockingQueue,队列默认大小是128

2) 使用标签

示例:

 


    

注意事项: 此类异步队列是Disruptor队列默认大小是4096

3) 使用 JVM参数

示例:

 

#启动参数方式
-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
#代码方式
System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

注意事项: 此类异步是全量异步,log4j配置文件里所有logger都自动异步,使用异步队列为Disruptor,队列默认大小4096

二、小提示:

① Disruptor队列性能远胜于BlockingQueue,这也是log4j2性能提升的重要原因之一

② 如果启用了全量异步,又使用了会如何?

log4j2会新建两个Disruptor队列,之流使用一个,其他的使用另外一个,所以建议将可能发生阻塞的logger归类使用一个Disruptor,毕竟是队列,一个阻塞了其他的得乖乖等着

③ 如果默认队列长度不足咋办?

 

#第一步:加大两个Disruptor队列的长度
-DAsyncLogger.RingBufferSize=262144
-DAsyncLoggerConfig.RingBufferSize=262144  
#第二步:设置队列满了时的处理策略:丢弃,否则默认blocking,异步就与同步无异了
-Dlog4j2.AsyncQueueFullPolicy=Discard

 

你可能感兴趣的:(日志处理)