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