【发布时间】:2016-06-14 18:15:00
【问题描述】:
我目前正在开发一个 java 日志转发器,它将消息记录到远程系统日志服务器。使用官方 Log4J2 手册,我使用通过 ConfigurationBuilder 工厂配置的 SyslogAppender 编写了代码。它适用于 UDP。 但是对于 TCP,它是一种缓冲所有消息的方式,一旦程序终止,它会立即将所有日志消息作为单个日志消息刷新。我尝试设置 immediateFlush 字段,但没有用。
【问题讨论】:
-
您对问题的解释很好,但在这种情况下,您还需要包含实际代码(您在其中解释)。这样做会让我们所有人都清楚地了解您正在使用什么。
-
SyslogAppender 使用的 TcpSocketManager 直接写入 Socket 的 OutputStream。每次写入后都会在 OutputStream 上调用 immediaFlush flush(),因此除非有 OS 缓冲正在进行,否则应立即写入数据。
-
您使用的是哪个版本的 Log4j 2?您可能想在 Log4j 问题跟踪器上提出 Jira 票证。
-
您好,我也遇到了同样的问题,您找到解决方案了吗?我正在使用 log4j 2.14。谢谢