Logback配置异步输出日志
为了加快程序的响应,日志异步打印是很有必要的。这里贴一个配置异步日志的xml,方便后续查阅
一、原理
logback的异步打印日志,原理就是用了一个阻塞队列来缓冲。具体可以参考源码ch.qos.logback.core.AsyncAppenderBase
二、参数说明
1. queueSize队列大小,默认256
2. discardingThreshold,默认为-1,当队列还有20%容量时,会丢弃日志(这里指info及以下级别才会丢弃),设置为 0 可以不丢弃
3. includeCallerData是否提取调用者信息,默认为false,一般不用配置
4. neverBlock当队列满了后是阻塞线程还是丢日志,默认是false,阻塞线程,这里要注意一下
三、贴个配置
这个配置很简单,套路如下:1. 配置一个正常的appender2. 配置一个异步appender,ref指向上面的那个appender3. 配置logger使用异步appender本质就是用异步appender来包装了一次;可以参考下面配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--用户行为日志-->
<included>
<springProperty scope="context" name="ACTION_LOG_HOME" source="ACTION_LOG_HOME" defaultValue="logs"/>
<springProperty scope="context" name="ACTION_LOG_HOME_EXT" source="ACTION_LOG_HOME_EXT" defaultValue="action"/>
<springProperty scope="context" name="ACTION_MAX_FILE_SIZE" source="ACTION_MAX_FILE_SIZE" defaultValue="1GB"/>
<springProperty scope="context" name="ACTION_LOG_FILE_MAX_HISTORY" source="ACTION_LOG_FILE_MAX_HISTORY" defaultValue="7"/>
<!--日志appender-->
<appender name="ACTION_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--自定义输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${ACTION_PATTERN:-%msg%n}</pattern>
</encoder>
<!--默认生成的日志文件名字-->
<file>${ACTION_LOG_HOME}/${ACTION_LOG_HOME_EXT}/actionLog.log</file>
<!--文件超出大小后的处理-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${ACTION_LOG_HOME}/${ACTION_LOG_HOME_EXT}/actionLog.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<!-- each file should be at most 300MB, keep 15 days worth of history, but at most 20GB -->
<maxFileSize>${ACTION_MAX_FILE_SIZE}</maxFileSize>
<!--保留15天-->
<maxHistory>${ACTION_LOG_FILE_MAX_HISTORY}</maxHistory>
<totalSizeCap>30GB</totalSizeCap>
</rollingPolicy>
</appender>
<!--异步输出 appender-->
<appender name="ACTION_LOG_APPENDER_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<neverBlock>true</neverBlock>
<!-- 队列的最大容量,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 队列满了,是否阻塞,默认为false;如果配置为true,则队列满了就丢弃日志; -->
<neverBlock>false</neverBlock>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ACTION_LOG_APPENDER"/>
</appender>
<!--配置logger,指向异步appender-->
<logger name="com.cybermax.manager.log.printer" additivity="false" level="info">
<appender-ref ref="ACTION_LOG_APPENDER_ASYNC"/>
</logger>
</included>
四、参考链接
1. 官网 https://logback.qos.ch/manual/appenders.html
作者:zeng1994
出处:http://www.cnblogs.com/zeng1994/
本文版权归作者和博客园共有,欢迎转载!但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接!