我正在使用 Logback SSLSocketAppender 将日志定向到中央记录器服务器。应用程序运行正常,我可以看到服务器端正在接收日志。
但是,仔细查看日志,通常每 5 个日志条目中,就有 1 或 2 个被丢弃。根据Logback Doc,TCP 协议应该保证日志的最终一致性,但在我的情况下不是。
SocketAppender 在传输控制协议 (TCP) 层之上运行,该层提供可靠的、有序的、流控制的端到端八位字节流。因此,如果远程服务器是可达的,那么日志事件最终会到达那里。否则,如果远程服务器关闭或无法访问,日志事件将被简单地丢弃。如果服务器恢复正常,则事件传输将透明地恢复。这种透明的重新连接由定期尝试连接到服务器的连接器线程执行。
想知道以前有人遇到过类似的问题吗?
谢谢!
- - - 编辑 - - -
我做了一个实验来确认它:
int i = 0 ;
while (i < 10000) {
log.info(i + " : =======");
i ++;
}
在服务器端,收到的日志如下所示:
2013-09-12 17:59:09,174 INFO [main] - 0 : =======
2013-09-12 17:59:09,175 INFO [main] - 5 : =======
2013-09-12 17:59:09,175 INFO [main] - 10 : =======
2013-09-12 17:59:09,176 INFO [main] - 13 : =======
2013-09-12 17:59:09,177 INFO [main] - 17 : =======
2013-09-12 17:59:09,178 INFO [main] - 21 : =======
如果我再次尝试,记录的消息会有所不同。