背景:
之前本地搭建好ELK后,随便起一个项目,可正常日志上送,但是后面我把elk部署到测试环境中发现,本地项目的日志就无法正常上送了,之前我是把上送地址配置到nacos上的,logback.xml中读取nacos然后日志上送指定ip。
配置信息:
logback.xml
<!--LogStash访问host-->
<springProperty name="LOG_STASH_HOST" scope="context" source="logstash.host" defaultValue="127.0.0.1"/>
nacos
logstash:
host: 192.168.0.111
原因分析:
之前因为elk和项目都在一台机器上,所以其实原来也没有读取到nacos的:“logstash.host”这个参数,因为logback.xml后面有个默认之“127.0.0.1”,所以没影响到正常上送日志。
而为什么logback.xml没有获取到nacos上的配置信息呢? 后面查了资料发现logback.xml和bootstrap.xml这类文件属于系统默认加载文件,不需要指定文件名。所以logback.xml在nacos加载之前就已经加载了,获取不到“logstash.host”参数后就用了默认值,所以我的nacos配置相当于是失效的。
解决:
第一步
bootstrap.xml这个改名,我改成了logback-nacos.xml,这样系统就不会自动加载这个配置文件
第二步
在nacos上添加配置文件logback-nacos.xml
logging:
config: classpath:logback-nacos.xml
这样logback-nacos.xml 就会在nacos加载之后加载,就可以正常获取“logstash.host”参数值
结果:
顺利解决