【问题标题】:Log4J 2 Syslog Appender not working properlyLog4J 2 Syslog Appender 无法正常工作
【发布时间】: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。谢谢

标签: java log4j2 syslog


【解决方案1】:

在 Syslog 定义中使用 newLine="true" 布尔值对我有用。

例子:

<Syslog name="LogStashSysLog" host="localhost" port="9998" protocol="TCP" newLine="true"/>

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2019-02-08
    • 2019-10-25
    • 1970-01-01
    相关资源
    最近更新 更多