springboot整合logback,项目根路径生成多余日志文件问题解决

问题描述:

Springboot整合logback并添加logback-spring.xml配置文件,启动项目后会在【配置的指定目录】及【项目根路径】下生成日志文件。
指定目录下生成的日志文件正常,项目根路径下生成的日志文件名为"XXX_IS_UNDEFINED"、“XXX_IS_UNDEFINED-XXX.XXX_IS_UNDEFINED”(文件数量与logback-spring.xml中配置的文件数量相同),并且为无内容的空文件。
很显然项目根路径下生成的日志文件是不需要的。
springboot整合logback,项目根路径生成多余日志文件问题解决_第1张图片

原因分析:

在没有logback-spring.xml配置文件的情况下,application.yml配置日志文件路径 logging:path: 后,会在配置路径下生成spring.log文件,经研究发现生成文件的位置可能为:
springboot整合logback,项目根路径生成多余日志文件问题解决_第2张图片
项目存在logback-spring.xml配置文件后,便会读取该配置文件。logback-spring.xml中引用了application.yml中自定义的变量,并重新配置了日志文件路径,产生"XXX_IS_UNDEFINED"、"XXX_IS_UNDEFINED-XXX.XXX_IS_UNDEFINED"文件很可能是项目启动时读取logback-spring.xml配置文件没有获取到配置中的引用值导致的。
springboot整合logback,项目根路径生成多余日志文件问题解决_第3张图片
如果logback-spring.xml配置中的引用值是无效的,那就不会在配置的目录下生成的正常的日志文件了。
现在出现的情况是配置的目录下正常生成了日志文件,只是在项目根路径下额外生成了日志文件,那应该可能是在项目依赖中在获取自定义的path之前有做过一次logback-spring.xml配置的加载,因为获取到的自定义变量为null,所以在默认路径下生成了日志文件。

解决方案:

1、logback配置文件添加配置:

	
    <property name="LOG_HOME" value="logDir"/>

2、将默认加载的配置文件名称logback.xml或logback-spring.xml修改为自定义名称xxx.xml
3、application.yml配置中指定logback配置文件路径:logging:config: classpath:xxx.xml
在这里插入图片描述
这样没有默认加载的配置文件,便不会额外在项目根目录下生成日志文件了。
具体logback-spring.xml在什么位置被重复加载,需有时间进一步研究后补充。

你可能感兴趣的:(java,spring,boot,logback)