设置spring-boot的logging

 

spring-boot默认使用logback来记录logger,spring-boot的包里面org.springframework.boot.logging.logback路径下面有一些配置文件,默认的状况下会使用base.xml,它把日志输出到控制台和文件之中。它的内容是:java

<included>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</included>

对于输出到文件,若是设置了logging.file就使用该值做为文件名称,若是设置了logging.path就使用logging.path/spring.log做为文件名称,若是都没有设置就放入临时文件中。spring

那么问题来了,若是要写入文件的话,一个文件不会被写得很大吗?
这个时候就能够看base.xml里面includeorg/springframework/boot/logging/logback/file-appender.xmlapp

咱们来看看org/springframework/boot/logging/logback/file-appender.xml里面是什么东西spring-boot

<included>
    <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>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
</included>

是的,默认的配置里面有个SizeBasedTriggeringPolicy来表示文件的大小,每一个文件到了10MB的时候就会从新开启一个文件,而且把以前的名称命名成${LOG_FILE}.%i,这样就解决了日志文件过大的问题。学习

有人可能想问,这些都是默认的配置,若是我不想使用默认的配置,我想按照天来切割日志,应该如何设置呢?.net

能够在resources目录下面建立一个logback-spring.xml的文件,而且给出本身想要的配置,这里给一个简单的配置是的日志文件能够按天为单位来切割日志文件日志

<?xml version="1.0" encoding="UTF-8"?>
 <configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
     <appender name="TIME_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.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
            <maxHistory>365</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
     </appender>
     <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="TIME_FILE" />
     </root>
</configuration>

上面%d{yyyy-MM-dd}表示命名的文件名字以原始的名字后面加上日期做为后缀,<maxFileSize>100MB</maxFileSize>表示每一个文件大小为100MB。这样日志文件就会以日期来进行切割而且进行保存了。code

因此说若是要自定义日志的格式, 就能够经过本身编写logback-spring.xml这个文件来本身定义了。xml

最后在配置文件appication.yaml设置好文件名称和日志级别就能够了ci

spring:  
  application:    
    name: spring-boot-logging

logging:  
  file: ./logs/spring-boot-logging.log  
  level:    
    com.dragon.study.spring.boot: DEBUG

若是须要在logback-spring.xml自定义一些配置文件,可使用

<springProperty scope="context" name="SYSLOG_HOST" source="logging.syslog.host" defaultValue="syslog.hostname" />
    <springProperty scope="context" name="SYSLOG_FACILITY" source="logging.syslog.facility" defaultValue="LOCAL7"/>

    <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>${SYSLOG_HOST}</syslogHost>
        <facility>${SYSLOG_FACILITY}</facility>
    </appender>

而后在appication.yaml的配置文件中加入

logging.syslog.facility: syslog.change.hostname
logging.syslog.facility: LOCAL1

配置进行替代默认值

PS: 遇到一个坑, 就是想关掉某个包下面的日志,不能直接

logging:  
  level:    
    com.dragon.study.spring.boot: OFF

由于OFF是yaml的关键字,上面那么写没有任何做用
因此若是想关掉某个包下面的日志的正确方法是 OFF上面加上单引号

logging:  
  file: ./logs/spring-boot-logging.log  
  level:    
    com.dragon.study.spring.boot: 'OFF'

 

最后若是以为所讲的东西可以帮助到你,而且但愿进行更详细的深刻的学习,欢迎加群632109190进行讨论和学习。

相关文章
相关标签/搜索