重新启动 syslog 服务后,Log4j2 Syslog appender 不会将第一条消息写入 syslog
Log4j2 Syslog appender is not writing the 1st message to syslog after the syslog service is restarted
我们已经将我们的应用程序配置为使用 Log4j2 的 Syslog appender 将一些特定的日志消息写入系统的 Syslog 文件。将 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
我们已经将我们的应用程序配置为使用 Log4j2 的 Syslog appender 将一些特定的日志消息写入系统的 Syslog 文件。将 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