原文鏈接:https://www.cnblogs.com/hhhshct/p/9084036.html
rollingPolicy 設置:<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<?xml version="1.0" encoding="UTF-8"?> <!-- scan:當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。 scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鍾。 debug:當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。--> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑 --> <property name="LOG_HOME" value="D:/logback" /> <!-- 控制台輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- %.-1level 只顯示信息級別的首字母,%-5level 左對齊顯示信息級別全稱 --> <Pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] --%mdc{client} %msg%n</Pattern> </encoder> </appender> <!-- 每天生成日志文件,文件大小超過50則新生成一個文件,同時將舊文件按${LOG_HOME}/logs/aa.%d{yyyy-MM-dd}.%i.log.zip格式壓縮,文件保存30天 --> <appender name="AA" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/aa.log</file> <!-- 日志名稱 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/logs/aa.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>50MB</maxFileSize> <!-- 日志文件過大會使的編輯器打開非常慢,因此設置日志最大50MB --> <maxHistory>30</maxHistory> <!-- 保存30天 --> <totalSizeCap>10GB</totalSizeCap> <!-- 總日志大小 --> </rollingPolicy> <!-- encoder負責兩件事,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流。 --> <encoder> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </encoder> <!-- 過濾器,可以過濾掉不符合條件的日志,INFO及以上的日志被處理,其它的拒絕 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="BB" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/bb.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/logs/bb.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="update" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/update.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/logs/update.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <maxFileSize>50KB</maxFileSize> <maxHistory>7</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- java項目中com.example.demo包下通過LoggerFactory.getLogger(Demo.class)獲取的日志全部由AA appender處理 --> <logger name="com.example.demo" additivity="false"> <appender-ref ref="AA" /> </logger> <!-- java項目中com.example.demo包下通過LoggerFactory.getLogger(Demo2.class)獲取的日志全部由BB appender處理 --> <logger name="com.example.demo.bb"> <appender-ref ref="BB" /> </logger> <!-- java項目中任意類中通過LoggerFactory.getLogger("update")獲取的日志全部由update appender處理 , 例如想把所有的更新操作的日志放在一起,便於查看 --> <logger name="update" > <appender-ref ref="update" /> </logger> <!-- 根日志,所有logger默認繼承自root,打印信息向上級傳遞,所以以上logger所打印的日志默認被 STDOUT appender再處理一遍, 也就是會被打印到控制台,可以再通過設置logger的additivity="false",使得不再向上傳遞 --> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>