1)引入
spring-boot默認日志系統就是logback日志框架
spring-boot引入logback的maven依賴關系樹如下:
2)配置
在application.properties文件中
#backlog setting
logging.config=logback-spring.xml
或者在 application-dev.yml文件中
logging:
config: classpath:logback-spring.xml
logback-spring.xml配置詳解
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="false" scanPeriod="10 seconds"> scan: 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。(這個功能可以在不重啟運行環境下,調整打印日志的細節,方便定位問題) scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鍾。 debug: 當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。 Logger 可以被分配級別。級別包括:TRACE、DEBUG、INFO、WARN 和 ERROR 級別排序為: TRACE < DEBUG < INFO < WARN < ERROR <!-- --> logger:日志所處的包 level:日志打印級別 <logger name="org.springframework" level="WARN" /> <logger name="org.apache.activemq" level="INFO" /> <logger name="org.apache.zookeeper" level="INFO" /> com.alibaba.dubbo是dubbo服務的包,在如何是info一下的級別會產生大量的啟動日志,調成WARN減少日志輸出 <logger name="com.alibaba.dubbo" level="WARN" /> com.ztev.audit.dao是本項目的dao層的包,把這個包的打印日志級別調成 DEBUG級別可以看到sql執行 <logger name="com.ztev.audit.dao" level="DEBUG" /> <logger name="com.ztev.cardNoVin.dao" level="DEBUG" /> <!--文件輸出的格式設置 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 文件輸出的日志 的格式 --> <encoder> <pattern> [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n </pattern> <charset>UTF-8</charset> <!-- 此處設置字符集,防止中文亂碼 --> </encoder> 樣例: [ INFO ] [2017-06-09 15:15:59] org.apache.tomcat.util.net.NioSelectorPool [179] - Using a shared selector for servlet [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] %msg%n、 level日志級別 時間 打印日志所處包.類 出現代碼行 日志信息 <!-- 配置日志所生成的目錄以及生成文件名的規則 在logs/mylog-2016-10-31.0.log --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 最大64MB 超過最大值,會重新建一個文件--> <maxFileSize>64 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <filter>: 過濾器,執行一個過濾器會有返回個枚舉值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志將立即被拋棄不再經過其他過濾器;返回NEUTRAL,有序列表里的下個過濾器過接着處理日志;返回ACCEPT,日志會被立即處理,不再經過剩余過濾器。 過濾器被添加到<appender> 中,為<appender> 添加一個或多個過濾器后,可以用任意條件對日志進行過濾。<appender> 有多個過濾器時,按照配置順序執行。 <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <!-- Safely log to the same file from multiple JVMs. Degrades performance! --> <prudent>:如果是 true,日志會被安全的寫入文件,即使其他的FileAppender也在向此文件做寫入操作,效率低,默認是 false。 <prudent>true</prudent> </appender> <!--控制台輸出的格式設置 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 控制台輸出的日志 的格式 --> <encoder> <pattern> [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n </pattern> <charset>UTF-8</charset> <!-- 此處設置字符集 --> </encoder> <!-- 只是DEBUG級別以上的日志才顯示 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> </appender> <!-- Enable FILE and STDOUT appenders for all log messages. By default, only log at level INFO and above. --> root: 也是<loger>元素,但是它是根loger。只有一個level屬性,應為已經被命名為"root". level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置為INHERITED或者同義詞NULL。默認是DEBUG。 <root level="INFO"> <appender-ref ref="FILE" /> <appender-ref ref="STDOUT" /> </root>
</configuration>
日志壓縮和總體大小配置
<!--文件輸出的格式設置 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 日志日常打印文件 --> <file>logs/mylog.log</file> <!-- 配置日志所生成的目錄以及生成文件名的規則 在logs/mylog-2017-06-31.0.log.zip --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/mylog-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <!-- 如果按天來回滾,則最大保存時間為365天,365天之前的都將被清理掉 --> <maxHistory>365</maxHistory> <!-- 日志總保存量為10GB --> <totalSizeCap>10GB</totalSizeCap> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!--文件達到 最大128MB時會被壓縮和切割 --> <maxFileSize>128 MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level> </filter> <!-- 文件輸出的日志 的格式 --> <encoder> <pattern> [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} -%msg%n </pattern> <charset>UTF-8</charset> <!-- 此處設置字符集 --> </encoder> <!-- Safely log to the same file from multiple JVMs. Degrades performance! --> <prudent>false</prudent> </appender>
效果(這只是測試用例。我限制了打印的大小。並不是上面配置的大小。而是10KB):

