我使用Logback SSLSocketAppender将日志定向到中央记录器服务器。应用程序运行正常,我可以看到服务器端收到的日志。
但是,仔细查看日志,通常每5个日志条目中就有1个或2个丢弃。根据{{3}},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 : =======
如果我再次尝试,则记录的消息将会有所不同。