在微服务实战项目中配置ELK日志中心相关的内容时,出现了标题中的错误,如下图所示。
错误信息贴在下面了。
23:45:46,970 |-ERROR in ch.qos.logback.classic.joran.action.ContextNameAction - Failed to rename context [newbee-mall-cloud-order-service-log] as [nacos] java.lang.IllegalStateException: Context has been already given a name
at java.lang.IllegalStateException: Context has been already given a name
报错的原因也不复杂,依赖冲突导致的。
Spring Boot框架中已经集成了日志框架Logback,而项目依赖nacos-client中也配置了Logback(nacos-client中的Logback加载要优先于项目自身的Logback框架),在一个项目中context_name只能定义一次。所以,在项目启动时,nacos-client中的Logback先加载完成后,再加载项目本身的Logback时就出现了冲突。
这个报错并不影响使用,但是处理掉最好,在启动类中增加如下代码即可。
System.setProperty("nacos.logging.default.config.enabled","false");
只加载自定义的Logback配置,不使用nacos-client依赖中的配置了,这样就不会冲突了。