Logback异步打印日志配置:
<?xml version="1.0" encoding="UTF-8"?>
<!--默认每隔一分钟扫描此配置文件的修改并重新加载-->
<configuration>
<!--定义日志文件的存储地址 勿在LogBack的配置中使用相对路径-->
<property name="LOG_HOME" value="/home/work/log/bssoutgoing"/>
<!--输出日志到文件中-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/info.log</file>
<!--不输出ERROR级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<!--根据日期滚动输出日志策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/info.log.%d{yyyy-MM-dd}</fileNamePattern>
<!--日志保留天数-->
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}|%t|%-5level|%X{threadId}|%C{0}#%M:%L|%msg%n</pattern>
</encoder>
</appender>
<!--错误日志输出文件-->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.log</file>
<!--只输出ERROR级别的日志-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!--根据日期滚动输出日志策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error.log.%d{yyyy-MM-dd}</fileNamePattern>
<!--日志保留天数-->
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}|%t|%-5level|%X{threadId}|%C{0}#%M:%L|%msg%n</pattern>
</encoder>
</appender>
<!--异步打印日志,任务放在阻塞队列中,如果队列达到80%,将会丢弃TRACE,DEBUG,INFO级别的日志任务,对性能要求不是太高的话不用启用-->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!--队列的深度,该值会影响性能,默认256-->
<queueSize>512</queueSize>
<!--设为0表示队列达到80%,也不丢弃任务-->
<discardingThreshold>0</discardingThreshold>
<!--日志上下文关闭后,AsyncAppender继续执行写任务的时间,单位毫秒-->
<maxFlushTime>1000</maxFlushTime>
<!--队列满了直接丢弃要写的消息-->
<neverBlock>true</neverBlock>
<!--是否包含调用方的信息,false则无法打印类名方法名行号等-->
<includeCallerData>true</includeCallerData>
<!--One and only one appender may be attached to AsyncAppender,添加多个的话后面的会被忽略-->
<appender-ref ref="FILE"/>
</appender>
<appender name="ERROR_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>256</queueSize>
<!--设为0表示队列达到80%,也不丢弃任务-->
<discardingThreshold>0</discardingThreshold>
<!--日志上下文关闭后,AsyncAppender继续执行写任务的时间,单位毫秒-->
<maxFlushTime>1000</maxFlushTime>
<!--队列满了直接丢弃要写的消息,不阻塞写入队列-->
<neverBlock>true</neverBlock>
<!--是否包含调用方的信息,false则无法打印类名方法名行号等-->
<includeCallerData>true</includeCallerData>
<!--One and only one appender may be attached to AsyncAppender,添加多个的话后面的会被忽略-->
<appender-ref ref="ERROR_FILE"/>
</appender>
<!--指定一些依赖包的日志输出级别,所有的logger会继承root,为了避免日志重复打印,需指定additivity="false",将不会继承root的append-ref-->
<!-- <logger name="com.xiaomi.mitv.outgoing" level="ERROR" additivity="false">
<appender-ref ref="STDOUT"/>
<!–<appender-ref ref="ERROR_FILE"/>–>
</logger>-->
<root level="INFO">
<!--<appender-ref ref="FILE"/>-->
<!--<appender-ref ref="ERROR_FILE"/>-->
<!--使用异步打印日志-->
<appender-ref ref="ASYNC"/>
<appender-ref ref="ERROR_ASYNC"/>
</root>
</configuration>
END
