美文网首页
LogBack AsyncAppender

LogBack AsyncAppender

作者: 晚歌歌 | 来源:发表于2018-08-21 15:51 被阅读0次

工作原理

AsyncAppender并不处理日志, 只是将日志缓冲到一个BlockingQueue里面去, 并在内部创建一个工作线程从队列头部获取日志, 之后将获取的日志循环记录到附加的其他appender上去, 从而达到不阻塞主线程的效果。因此AsynAppender仅仅充当事件转发器, 必须引用另一个appender来工作。

使用

<appender name="FILE" class= "ch.qos.logback.core.rolling.RollingFileAppender">    
            <!-- 按天来回滚,如果需要按小时来回滚,则设置为{yyyy-MM-dd_HH} -->    
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">    
                 <fileNamePattern>/opt/log/test.%d{yyyy-MM-dd}.log</fileNamePattern>    
                 <!-- 如果按天来回滚,则最大保存时间为1天,1天之前的都将被清理掉 -->    
                 <maxHistory>30</maxHistory>    
            <!-- 日志输出格式 -->    
            <layout class="ch.qos.logback.classic.PatternLayout">    
                 <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n</Pattern>    
            </layout>    
</appender>    
     <!-- 异步输出 -->    
     <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">    
            <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->    
            <discardingThreshold >0</discardingThreshold>    
            <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->    
            <queueSize>512</queueSize>    
            <!-- 添加附加的appender,最多只能添加一个 -->    
         <appender-ref ref ="FILE"/>    
     </appender>    
         
     <root level ="trace">    
            <appender-ref ref ="ASYNC"/>    
     </root>   

参数配置

queueSize:BlockingQueue的最大容量,默认情况下,大小为256

discardingThreshold:默认情况下,当BlockingQueue还有20%容量,将丢弃TRACE、DEBUG和INFO级别的event,只保留WARN和ERROR级别的event。为了保持所有的events,设置该值为0。

neverBlock:默认值为false,会造成线程的阻塞。设置为true时,直接丢弃消息,不会造成线程的阻塞。

相关文章

网友评论

      本文标题:LogBack AsyncAppender

      本文链接:https://www.haomeiwen.com/subject/gbrjiftx.html