【问题标题】:Changing Apache Storm Log4j2 syslog appender from UDP to TCP将 Apache Storm Log4j2 syslog appender 从 UDP 更改为 TCP
【发布时间】:2019-12-30 12:39:20
【问题描述】:

在我的 Storm 拓扑中,我通过 Kafka spout 将大量 JSON 数据传输到 ElasticSearch bolt。

问题是 Apache Storm 使用的 Log4j2 在其配置中为 clusterworker 使用 UDP 协议:

Log4j2/Worker.xml:

    <Syslog name="syslog" format="RFC5424" charset="UTF-8" host="localhost" port="514"
        protocol="UDP" appName="[${sys:storm.id}:${sys:worker.port}]" mdcId="mdc" includeMDC="true"
        facility="LOCAL5" enterpriseNumber="18060" newLine="true" exceptionPattern="%rEx{full}"
        messageId="[${sys:user.name}:${sys:logging.sensitivity}]" id="storm" immediateFail="true" 
        immediateFlush="true"/>

因此 - 我在提交拓扑时收到下一个错误:

错误无法写入流 UDP:localhost:514 for appender syslog org.apache.logging.log4j.core.appender.AppenderLoggingException:错误 刷新流 UDP:localhost:514

这是因为消息长度。

我想知道是否可以将 Apache Storm Syslog appender 的默认协议从 UDP 更改为 TCP?

【问题讨论】:

    标签: tcp udp log4j2 apache-storm syslog


    【解决方案1】:

    这与 Storm 没有太大关系,因为 Storm 只是使用 Log4j2 支持的任何设置。我会看看https://logging.apache.org/log4j/2.x/manual/appenders.html#SyslogAppender,尤其是那里给出的 TCP syslog appender 示例。

    <Syslog name="RFC5424" format="RFC5424" host="localhost" port="8514"
                protocol="TCP" appName="MyApp" includeMDC="true"
                facility="LOCAL0" enterpriseNumber="18060" newLine="true"
                messageId="Audit" id="App"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      相关资源
      最近更新 更多