当log4j太长时,它不记录整个消息

时间:2015-12-11 14:48:12

标签: java udp log4j slf4j

我正在使用org.slf4j:slf4j-log4j12:1.7.12。这是我的log4j.properties

log4j.rootCategory=INFO, CONSOLE, UDP

# Console appender
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss, SSS} [%X{uow}-%X{requestId}] [%15.15t] %-5p %30.30c l%-3L %x - %m%n

# UDP appender
log4j.appender.UDP=com.mybusiness.framework.logging.log4j.appender.UDPExceptionSocketAppender
log4j.appender.UDP.layout=org.apache.log4j.PatternLayout
log4j.appender.UDP.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss, SSS} [%X{uow}-%X{requestId}] [%15.15t] %-5p %30.30c l%-3L %x - %m%n
log4j.appender.UDP.destinationAddress=log.ic.mybusiness.it
log4j.appender.UDP.destinationPort=32211

当我想记录一条长消息时,我在每个appender上都有不同的输出。例如如果消息有17000个字符,从控制台我得到14000个字符,从udp得到8000个字符。我认为这里的问题可能与每行的最大长度配置相关,我是对的吗?不过,我无法找到那个特定的财产。

你对此有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我怀疑问题在于数据报(UDP数据包)的大小。

理论上,您可以使用大约65,000字节的UDP数据包,但是您需要考虑传输的MTU(最大传输单元)大小,这可能会给您一个小得多的数据包。

如果你想要可靠和无损的通信,那么UDP不是一个解决方案,我会建议一个基于TCP的机制。

更多信息with this question