SpringBoot使用logback自定义配置时遇到的坑 --- 在 /tmp目录下自动生成spring.log文件
程序员文章站
2022-04-14 18:05:36
问题描述 SpringBoot项目使用logback自定义配置后,会在/tmp/ 目录下生成 spring.log的文件(如下图所示)。 解决方案 通过各种资料的搜索,最终发现问题的所在(logback配置如下)。 通过分析上面配置发现base.xml中包含了以下内容: 从base.xml中可以看出 ......
问题描述
springboot项目使用logback自定义配置后,会在/tmp/ 目录下生成 spring.log的文件(如下图所示)。
解决方案
通过各种资料的搜索,最终发现问题的所在(logback配置如下)。
<?xml version="1.0" encoding="utf-8"?> <configuration scan="true"> <include resource="org/springframework/boot/logging/logback/base.xml"/> <springproperty scope="context" name="springappname" source="spring.application.name"/> <property name="log_file" value="logs/${springappname}"/> <appender name="console" class="ch.qos.logback.core.consoleappender"> <layout class="ch.qos.logback.classic.patternlayout"> <pattern> %black(%d{iso8601}) %highlight(%-5level) [%blue(%t)] %yellow(%c{1.}): %msg%n%throwable </pattern> </layout> </appender> <appender name="file" class="ch.qos.logback.core.rolling.rollingfileappender"> <rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy"> <filenamepattern>${log_file}.%d{yyyy-mm-dd}.%i.log</filenamepattern> <maxhistory>90</maxhistory> <timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedfnatp"> <maxfilesize>200mb</maxfilesize> </timebasedfilenamingandtriggeringpolicy> </rollingpolicy> <encoder> <charset>utf-8</charset> <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern> </encoder> </appender> <appender name="async" class="ch.qos.logback.classic.asyncappender"> <queuesize>512</queuesize> <appender-ref ref="file"/> </appender> <root level="debug"> <appender-ref ref="console"/> <appender-ref ref="async"/> </root> <!-- https://logback.qos.ch/manual/configuration.html#shutdownhook and https://jira.qos.ch/browse/logback-1090 --> <shutdownhook class="ch.qos.logback.core.hook.delayingshutdownhook"/> <contextlistener class="ch.qos.logback.classic.jul.levelchangepropagator"> <resetjul>true</resetjul> </contextlistener> </configuration>
通过分析上面配置发现base.xml中包含了以下内容:
<?xml version="1.0" encoding="utf-8"?> <!-- base logback configuration provided for compatibility with spring boot 1.1 --> <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>
从base.xml中可以看出来,会在/tmp/目录下默认生成一个spring.log,问题已经发现了,那就说明这里的配置需要更改,改成什么呢?
通过在github上查询,只需要将
<include resource="org/springframework/boot/logging/logback/base.xml"/>
替换成
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
即可。
问题解决。