slf4j-logback-Appender进阶 - java 学习路 - ITeye技术网站
logback 进阶基础篇请参考http://wangxinchun.iteye.com/blog/2094761
1、AsyncAppender。
为了提升性能,logback 支持异步的日志记录。
关于异步:本质就是执行不等待,所谓执行就是提交任务。任务执行 1、有结果:一般认为执行完可以回调;2、没有结果,执行完就完事。log的记录就是典型的没有结果的情况,调用方不需要知道执行的最终结果。
实现: logback 是通过 ch.qos.logback.classic.AsyncAppender 来实现异步的log日志记录的。其内部实现是通过保存一个 BlockingQueue<E> blockingQueue; 来缓存 (info,warn,error)的日志消息,然后由一个 Worker worker 线程 从 blockingQueue 中 blockingQueue.take();数据,并输出到 AppenderAttachableImpl<E> aai 中。
关于BlockingQueue的使用 是异步的重点,请参考:
http://wangxinchun.iteye.com/blog/1882960
使用说明:
queueSize 缓存记录的size 非常重要,默认是256,对于并发量较高的系统,队列深度需要根据业务场景进行相应的测试,做出相应的更改,以达到较好的性能。
discardingThreshold:默认情况下,当BlockingQueue还有20%容量,他将丢弃TRACE、DEBUG和INFO级别的event,只保留WARN和ERROR级别的event。为了保持所有的events,设置该值为0。
Read full article from slf4j-logback-Appender进阶 - java 学习路 - ITeye技术网站
No comments:
Post a Comment