UDP的log4j2系统日志数据报大小eceeds限制

UDP的log4j2系统日志数据报大小eceeds限制,udp,log4j2,syslog,Udp,Log4j2,Syslog,我正在log4j2 Syslogappender中使用UDP,我已经编程配置了appender,消息正在登录到控制台和Syslog,除非消息超过65446个字符,否则它工作正常 在Syslog(Log4j2)中是否有任何方法可用于UDP增加通过网络发送的消息的限制大小 我将感激任何帮助 下面是它抛出的错误-: 2017-08-10 14:12:21,321 main ERROR Unable to write to stream UDP:localhost:514 for appender Bi

我正在
log4j2 Syslog
appender中使用
UDP
,我已经编程配置了appender,消息正在登录到控制台和Syslog,除非消息超过
65446
个字符,否则它工作正常

Syslog
Log4j2
)中是否有任何方法可用于
UDP
增加通过网络发送的消息的限制大小

我将感激任何帮助

下面是它抛出的错误-:

2017-08-10 14:12:21,321 main ERROR Unable to write to stream UDP:localhost:514 for appender Bill: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error flushing stream UDP:localhost:514
2017-08-10 14:12:21,322 main ERROR An exception occurred processing Appender Bill org.apache.logging.log4j.core.appender.AppenderLoggingException: Error flushing stream UDP:localhost:514
at org.apache.logging.log4j.core.appender.OutputStreamManager.flushDestination(OutputStreamManager.java:272)
at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:228)
at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:201)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:186)
at org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:446)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403)
at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2091)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1988)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1960)
at org.apache.logging.log4j.spi.AbstractLogger.debug(AbstractLogger.java:311)
at Log4j2Example.main(Log4j2Example.java:81)
Caused by: java.net.SocketException: The message is larger than the maximum supported by the underlying transport: Datagram send failed
at java.net.DualStackPlainDatagramSocketImpl.socketSend(Native Method)
at java.net.DualStackPlainDatagramSocketImpl.send(Unknown Source)
at java.net.DatagramSocket.send(Unknown Source)
at org.apache.logging.log4j.core.net.DatagramOutputStream.flush(DatagramOutputStream.java:103)
at org.apache.logging.log4j.core.appender.OutputStreamManager.flushDestination(OutputStreamManager.java:270)
... 21 more

UDP消息的大小只能为65507字节。如果需要较大的消息,请使用不同的传输层。

UDP消息的大小只能为65507字节。如果需要更大的消息,请使用不同的传输层。

我遇到了同样的错误,我使用此处提供的自定义JSONLayout解决了它:

我猜这个布局没有log4j2提供的标准布局那么详细。 所以现在我可以通过UDP发送消息,即使是包含大堆栈跟踪的消息

因此,我的log4j2.xml看起来像:

<Socket name="Logstash" host="hostname" port="portnumber" protocol="UDP" immediateFlush="false" ignoreExceptions="true">
   <LogstashLayout dateTimeFormatPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" eventTemplateUri="classpath:LogstashJsonEventLayoutV1.json"                 prettyPrintEnabled="true" stackTraceEnabled="true" />
</Socket>

我遇到了同样的错误,我使用这里提供的自定义JSONLayout解决了它:

我猜这个布局没有log4j2提供的标准布局那么详细。 所以现在我可以通过UDP发送消息,即使是包含大堆栈跟踪的消息

因此,我的log4j2.xml看起来像:

<Socket name="Logstash" host="hostname" port="portnumber" protocol="UDP" immediateFlush="false" ignoreExceptions="true">
   <LogstashLayout dateTimeFormatPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZZZ" eventTemplateUri="classpath:LogstashJsonEventLayoutV1.json"                 prettyPrintEnabled="true" stackTraceEnabled="true" />
</Socket>


或者如果套接字发送缓冲区小于65507,则增加其大小。@EJP:这对UDP有何帮助?UDP数据报的大小有限制。如果套接字发送缓冲区小于65507,则增加其大小。@EJP:这对UDP有何帮助?UDP数据报的大小有限制。