自定义application文件的位置,然后在main类利用@PropertySource引入。发现application文件配置的日志失效了?

application.properties文件中是按照如下方式配置的
logging.config=classpath:config11/log/logback-spring.xml

application.properties在resource路径下可以正常执行。在config环境下依然可以正常执行。但是给config改为config11后。然后在main类上加@PropertySource引入了自定义位置下的application文件,发现日志文件失效了~~ 求高人指教,小子感激不尽! 非企业开发,个人纯粹好奇

没遇到过这种问题,我猜测是这样的。spring启动就会去加载配置,根据配置中的信息初始化日志系统(配置中没日志配置信息,则用默认的)。而当加载到@PropertySource时,日志系统是已经初始化完成了的。所以@PropertySource导入的配置文件中的日志配置不生效,是因为日志系统已经初始化了。

像是日志这类东西,就不建议通过 @PropertySource 去加载了,老老实实写在根目录application.properties中。

1:自定义application文件所处位置。 利用@PropertySource加载。
2: application文件中配置的日志logging.config=classpath:config11/log/logback-spring.xml 没正常启动~
结论:我知道放到classpath下就正常了,但是就是好奇为啥自定义路径的时候配置文件中的日志配置不生效

默认的配置文件加载位置是这么定义的
By default properties will be loaded from ‘application.properties’ and/or ‘application.yml’ files in the following locations:

  • file:./config/
  • file:./config/*/
  • file:./
  • classpath:config/
  • classpath:
    The list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).

Alternative search locations and names can be specified using setSearchLocations(String) and setSearchNames(String) .

Additional files will also be loaded based on active profiles. For example if a ‘web’ profile is active ‘application-web.properties’ and ‘application-web.yml’ will be considered.

The ‘spring.config.name’ property can be used to specify an alternative name to load and the ‘spring.config.location’ property can be used to specify alternative search locations or specific files.

1 Like

应该是顺序问题 logging配置 在启动的listner中读取配置 此时propertySource文件还没配置bean

1 Like