LOG_PATH_IS_UNDEFINED


问题:

SpringBoot + LogBack 写日志,除了正常的日志之外,程序跑起来后会在项目根目录多生成一个 LOG_PATH_IS_UNDEFINED 的文件夹,我的配置是以下:

applickation.yml

#log
logging:
  config: classpath:logback-spring.xml
  path: d:/log/outerlink
#log end
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>

    

    class="ch.qos.logback.core.rolling.RollingFileAppender">
        class="ch.qos.logback.classic.filter.ThresholdFilter">
            ERROR
        
        ${LOG_PATH}/error.log
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            ${LOG_PATH}/error-%d{yyyyMMdd}.log.%i
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                50MB
            
            2
        

        class="ch.qos.logback.classic.PatternLayout">
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
        
    

    
        
    

解决办法 :

新建 bootstrap.yml,把日志配置写到里面

 原因:

Spring容器在Logback初始化之后设置LOG_PATH ,所以在 logback-spring.xml 找不到 LOG_PATH。但 bootstrap.yml 由父Spring ApplicationContext加载,父ApplicationContext被加载到使用application.yml的之前

注:

发现只有在 pom.xml 加入spring cloud相关包才能加载 bootstrap.yml , 具体原因还不是很明白 。我是加入了


    org.springframework.cloud
    spring-cloud-starter-feign
    1.4.2.RELEASE
yml