项目状况

项目中采用了Spring Cloud、Spring Cloud Alibaba、Nacos(使用配置中心)、slf4j、Logback等框架。

使用的过程中出现一个奇怪的状况,就是当Nacos动态更新新的配置文件时,会导致日志文件中不再输出日志。

原因梳理

Spring Cloud Nacos 动态更新配置logback日志不输出问题插图

导致上述问题的原因是,Nacos配置更新之后,Spring Cloud监听到变化,会动态的重启Spring Boot,然后重新初始化LoggingSystem。

在初始化LoggingSystem的时候,会进行Logback配置文件的加载以及对应的Appender的实例化。

但此时,因为在Logback的logback-spring.xml中配置日志路径采用的是动态获取Application文件中的内容,而不是写死的文件路径。也就是说使用的是springProperty标签来获取日志路径。但LoggingSystem重新初始化时获取不到该值(应该是个bug),就导致了使用该路径的appender的路径采用了系统默认的路径,比如跑到内置的Tomcat下面等。

那么,除了升级版本看看是否能解决该问题之外,最快捷的方式就是将通过springProperty获取日志路径改为写死的日志路径。这样就可以解决上述问题了。



Spring Cloud Nacos 动态更新配置logback日志不输出问题插图1

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2021/08/10/spring-cloud-nacos-logback/