【问题标题】:log4j is not logging entire message when its too long当日志太长时,log4j 不会记录整个消息
【发布时间】:2015-12-11 14:48:11
【问题描述】:

我正在使用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

当我想记录长消息时,每个附加程序都有不同的输出。例如如果消息有 17000 个字符,从控制台我得到 14000 个字符,从 udp 我得到 8000 个字符。我认为这里的问题可能与一些 每行最大长度 配置有关,对吗?尽管如此,我还是找不到那个特定的属性。

你对此有什么想法吗?

【问题讨论】:

    标签: java udp log4j slf4j


    【解决方案1】:

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

    理论上,您可以拥有大约 65,000 字节的 UDP 数据包大小,但您需要考虑传输的 MTU(最大传输单元)大小,这可能会给您带来更小的数据包。

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

    更多信息with this question

    【讨论】:

    • 所以如果我理解正确,解决问题的唯一方法是将数据包大小更改为更大?为什么控制台附加程序也不能正确打印它?不能与正确的 log4j 配置相关吗?也许它有一些限制内容长度的默认值(我说的是我对这个主题的完全无知)。感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 2013-11-08
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多