--<appender-ref ref="consoleWithSwitch"/>--><appender-refref="catAppender"/><appender-refref="asyncFileAppender"/></root></springProfile> 那么何时把队列中的数据存入日志文件呢?AsyncAppenderBase 中有一个 Worker 对象,负责从队列中取数据并调用 AppenderAttachableImpl 来处理:(这里一次只取一个进行追...
--<appender-ref ref="consoleWithSwitch"/>--><appender-refref="catAppender"/><appender-refref="asyncFileAppender"/></root></springProfile> 那么何时把队列中的数据存入日志文件呢?AsyncAppenderBase 中有一个 Worker 对象,负责从队列中取数据并调用 AppenderAttachableImpl 来处理:(这里一次只取一个进行追...
(4) 启动Appender,启动worker线程读取数据(需要确保Appender在worker线程前启动). 1.3 关闭appender @Overridepublicvoidstop(){if(!isStarted())return;super.stop();// interrupt the worker thread so that it can terminate. Note that the interruption can be consumed// by sub-appendersworker.interrupt();I...
{discardingThreshold}</discardingThreshold> <queueSize>${queueSize}</queueSize> <includeCallerData>${includeCallerData}</includeCallerData> <neverBlock>${neverBlock}</neverBlock> <maxFlushTime>${maxFlushTime}</maxFlushTime> </appender> <root level="info"> <appender-ref ref="ASYNC_FILE"/> <...
AsyncAppender:通过队列储存日志事件,启动Worker线程读取日志事件并写入关联的Appender中; RollingFileAppender:当日志文件满足设定的翻滚条件时,对文件进行翻滚操作. PS: AsyncAppender可以与RollingFileAppender结合使用,提升日志事件写入效率. 1 AsyncAppender public class AsyncAppender extends AsyncAppenderBase<ILoggingEvent> ...
在第二篇里面我们实现了一个非常轻量级的异步刷盘的AsyncFlushRollingFileAppender,但是功能非常有限,在logback里面已经提供了一个现成的异步缓冲刷盘的Appender AsyncAppender,这个Appender其实就是一个包装类,典型的装饰模式的应用。其继承的类图如下 image.png
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>512</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref ="FILE"/> </appender> <root level ="trace"> <appender-ref ref ="ASYNC"/> </root>...
worker.resume(); asyncAppenderBase.stop(); assertEquals(0, asyncAppenderBase.getNumberOfElementsInQueue()); verify(la, loopLen); } 代码示例来源:origin: tony19/logback-android @Test(timeout = 2000) public void eventLossIfNeverBlock() { int bufferSize = 10; int loopLen = bufferSize * 2; ...
AsyncAppender:通过队列储存日志事件,启动Worker线程读取日志事件并写入关联的Appender中; RollingFileAppender:当日志文件满足设定的翻滚条件时,对文件进行翻滚操作. PS: AsyncAppender可以与RollingFileAppender结合使用,提升日志事件写入效率. 1 AsyncAppender publicclassAsyncAppenderextendsAsyncAppenderBase<ILoggingEvent> {// ...
worker.suspend(); for (int i = 0; i < loopLen; i++) { asyncAppenderBase.doAppend(i); } assertEquals(loopLen, asyncAppenderBase.getNumberOfElementsInQueue()); assertEquals(0, la.list.size()); asyncAppenderBase.worker.resume(); asyncAppenderBase.stop(); assertEquals(0, asyncAppenderBase....