使用SocketAppender进行日志记录时缺少日志条目

时间:2013-09-12 04:12:20

标签: sockets logging logback

我使用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 : =======

如果我再次尝试,则记录的消息将会有所不同。

1 个答案:

答案 0 :(得分:1)

http://logback.qos.ch/news.html表示Logback 1.1.1包含对与SocketAppender相关的已删除事件的修复。