spring-boot logback日志常用配置解釋(日志壓縮和限制日志總體大小)


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):

 

 

 

 

 

 

 

 

 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM