将apache storm log4j2 syslog appender从udp更改为tcp

wz8daaqr  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(703)

在我的storm拓扑中,我通过kafka喷口将大量json数据传输到elasticsearch bolt。
问题是,apachestorm使用的log4j2在其配置中使用udp协议,用于 cluster 以及 worker :
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对于appender syslog org.apache.logging.log4j.core.appender.appenderloggingexception:刷新流时出错udp:localhost:514
这是因为消息的长度。
我想知道是否有可能将apachestormsyslog appender的默认协议从udp更改为tcp?

dwbf0jvd

dwbf0jvd1#

这与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"/>

相关问题