我正在使用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 个字符。我认为这里的问题可能与某些每行最大长度配置有关,对吗?尽管如此,我还是找不到那个特定的属性。
你对此有什么想法吗?
最佳答案
我怀疑问题出在数据报(UDP 数据包)大小上。
理论上,您可以拥有大约 65,000 字节的 UDP 数据包大小,但您需要考虑传输的 MTU(最大传输单元)大小,这可能会给您一个小得多的数据包。
如果你想要可靠且无损的通信,那么 UDP 不是一个解决方案,我建议使用基于 TCP 的机制。
更多信息with this question .
关于java - 当消息太长时,log4j 不会记录整个消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226186/