##问题描述 SpringBoot项目使用logback自定义配置后,会在/tmp/ 目录下生成 spring.log的文件(如下图所示)。 
##解决方案 通过各种资料的搜索,最终发现问题的所在(logback配置如下)。
1<?xml version="1.0" encoding="UTF-8"?> 2<configuration scan="true"> 3 <include resource="org/springframework/boot/logging/logback/base.xml"/> 4 5 <springProperty scope="context" name="springAppName" source="spring.application.name"/> 6 <property name="LOG_FILE" value="logs/${springAppName}"/> 7 8 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 9 <layout class="ch.qos.logback.classic.PatternLayout"> 10 <pattern> 11 %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable 12 </pattern> 13 </layout> 14 </appender> 15 <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 16 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 17 <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 18 <maxHistory>90</maxHistory> 19 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 20 <maxFileSize>200MB</maxFileSize> 21 </timeBasedFileNamingAndTriggeringPolicy> 22 </rollingPolicy> 23 <encoder> 24 <charset>utf-8</charset> 25 <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern> 26 </encoder> 27 </appender> 28 <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 29 <queueSize>512</queueSize> 30 <appender-ref ref="FILE"/> 31 </appender> 32 <root level="DEBUG"> 33 <appender-ref ref="CONSOLE"/> 34 <appender-ref ref="ASYNC"/> 35 </root> 36 37 <!-- https://logback.qos.ch/manual/configuration.html#shutdownHook and https://jira.qos.ch/browse/LOGBACK-1090 --> 38 <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/> 39 40 <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> 41 <resetJUL>true</resetJUL> 42 </contextListener> 43 44</configuration>
###通过分析上面配置发现base.xml中包含了以下内容:
1<?xml version="1.0" encoding="UTF-8"?> 2 3<!-- 4Base logback configuration provided for compatibility with Spring Boot 1.1 5--> 6 7<included> 8 <include resource="org/springframework/boot/logging/logback/defaults.xml" /> 9 <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/> 10 <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> 11 <include resource="org/springframework/boot/logging/logback/file-appender.xml" /> 12 <root level="INFO"> 13 <appender-ref ref="CONSOLE" /> 14 <appender-ref ref="FILE" /> 15 </root> 16</included>
从base.xml中可以看出来,会在/tmp/目录下默认生成一个spring.log,问题已经发现了,那就说明这里的配置需要更改,改成什么呢? 通过在github上查询,只需要将
<include resource="org/springframework/boot/logging/logback/base.xml"/>
替换成
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
即可。
问题解决。