前一段时间部门开发一个新的项目,用的dubbo+spring boot架构,日志平台用的elk,不过在项目真正跑起来的之后发现,只有一个应用可以正常推送日志,其他应用的日志在elk中一个也看不到。我最终排查解决了这个问题,并且记录下来。
一开始这个问题很让人摸不着头脑,因为日志推送是一个单独的maven模块,其他所有的应用都引用这个模块,可是却只有一个应用是可以正常推送的,而且这个日志推送模块是在一套生产中运行的项目中copy过来的,按理是不应该会有不可用的现象。
最开始怀疑日志消息在kafka中断掉了,于是登上服务器的kafka中检查了一下,kafka中并没有消息积累,而且尝试在本地运行应用,kafka中也并没有接收到任何消息。
那么问题肯定就出在logback上面了,说到这里先介绍一下logback的几个关键点 Logger、Appender和Layout
- Logger
日志的记录器,主要负责记录存放日志对象
- Appender
负责指定日志的输出地,可以是控制台、文件或者远程消息队列等。这个项目就是使用一个KafkaAppender讲日志推送到Kafka
- Layout
负责日志格式化输出
因为日志输出到控制台是没有问题的,所以问题应该出在KafkaAppender上,在logback.xml中开启logback内部的日志信息,查看一下是否有报错。
<!--将debug属性改为true,即可开启logback内部日志,其他几个属性值的含义自行百度-->
<confi