2016-09-21 189 views
6

在我們的spring-boot項目中,我們使用slf4j用於記錄目的。下面是配置我們在application.properties添加文件Spring boot - 備份日誌文件數限制爲7

logging.file=/opt/logs/my_log.log 
logging.level.org.springframework.web=INFO 
logging.level.org.hibernate=INFO 
logging.level.nl.yestelecom.boss=DEBUG 
logging.level.com.github.isrsal.logging.LoggingFilter=DEBUG 

產生只有7備份文件(my_log.log.1,my_log.log.2 ...,my_log.log.7 ),每個文件的大小爲10.5MB,之後根本沒有發生日誌記錄。

有什麼方法可以改變這種行爲嗎?

我們查看了spring-boot的可用屬性,但是沒有發現任何東西。任何建議表示讚賞。

回答

11

Spring-Boot只允許在其application.properties中配置有限的屬性。請參閱list here

Spring-boot使用的默認(開箱即用)配置在base.xml中定義。見base.xml config here其中包括this File appender

有2種方式來添加額外的配置

  1. 添加的logback-spring.xml

如果存在的logback配置XML與名稱的logback彈簧。 xml在項目的類路徑中,它在初始化時被Spring-Boot拾取。

  • 從application.properties
  • 在application.properties指向配置文件使用以下指向您的自定義XML的logback

    logging.config= # Location of the logging configuration file. For instance `classpath:logback.xml` for Logback 
    

    一旦您使用上述2個步驟中的任何一個添加額外的配置,可以在此定製XML內提及翻轉策略,如下所示:

    <?xml version="1.0" encoding="UTF-8"?> 
    <configuration scan="true"> 
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
         <encoder> 
          <charset>UTF-8</charset> 
          <Pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern> 
         </encoder> 
        </appender> 
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
         <encoder> 
          <pattern>${FILE_LOG_PATTERN}</pattern> 
         </encoder> 
         <file>${LOG_FILE}</file> 
         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
          <fileNamePattern>${LOG_FILE}.%i</fileNamePattern> 
          <minIndex>1</minIndex> 
          <maxIndex>10</maxIndex> 
         </rollingPolicy> 
         <triggeringPolicy 
         class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
          <MaxFileSize>10MB</MaxFileSize> 
         </triggeringPolicy> 
        </appender> 
    
        <root level="DEBUG"> 
         <appender-ref ref="CONSOLE" /> 
         <appender-ref ref="FILE"/> 
        </root> 
    </configuration> 
    
    +0

    謝謝迪帕克的詳細答案:) –

    +0

    歡迎您朋友 – DeepakV

    5

    SFL4J只是包裝。您需要添加額外配置的logback庫:

    <configuration> 
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
        <file>logFile.log</file> 
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
         <!-- daily rollover --> 
         <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
    
         <!-- keep 30 days' worth of history capped at 3GB total size --> 
         <maxHistory>30</maxHistory> 
         <totalSizeCap>3GB</totalSizeCap> 
    
        </rollingPolicy> 
    
        <encoder> 
         <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
        </encoder> 
        </appender> 
    
        <root level="DEBUG"> 
        <appender-ref ref="FILE" /> 
        </root> 
    </configuration> 
    

    source

    在這種情況下,我們必須從過去30天的日誌,但不超過3GB大。

    +0

    感謝@Koziolek的即時回覆。我正在考慮如何加載這個文件,我得到了Deepak的答案:) –

    相關問題