【发布时间】:2022-01-31 19:40:09
【问题描述】:
我们已经将我们的应用程序配置为使用 Log4j2 的 Syslog appender 将一些特定的日志消息写入系统的 Syslog 文件。将系统日志写入文件没有问题。但是当重新启动 syslog 服务时,第一条日志消息不会写入 syslog。写入后续消息。
启用 Log4j 的调试日志,重启后将第一条消息写入 syslog 时没有看到异常。但是对于后续的请求,Log4j2 日志中捕获了以下消息。
2022-01-27 18:07:40,120 ajp-nio-0.0.0.0-8009-exec-3 DEBUG Reconnecting localhost/127.0.0.1:514
2022-01-27 18:07:40,121 ajp-nio-0.0.0.0-8009-exec-3 DEBUG Creating socket localhost/127.0.0.1:514
2022-01-27 18:07:40,122 ajp-nio-0.0.0.0-8009-exec-3 DEBUG Closing SocketOutputStream java.net.SocketOutputStream@1a769d7
2022-01-27 18:07:40,122 ajp-nio-0.0.0.0-8009-exec-3 DEBUG Connection to localhost:514 reestablished: Socket[addr=localhost/127.0.0.1,port=514,localport=57852]
我使用 threaddump 并检查了 Reconnector 线程是否正在运行,但 threaddump 中不存在这样的线程。我在这里一无所知,任何有关查找丢失消息原因的帮助都会有所帮助。
环境细节: CentOS 7.9 + RSyslog 服务, 应用程序部署在 Tomcat 中并在 Java 11 上运行, Log4j2 版本为 2.17.1
【问题讨论】: