1

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

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

4

1 回答 1

1

http://logback.qos.ch/news.html声明 Logback 1.1.1 包含对与 SocketAppender 相关的丢弃事件的修复。

于 2014-02-17T08:25:02.707 回答