2016-09-21 40 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的答案:) –