java - 当消息太长时,log4j 不会记录整个消息

标签 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

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

你对此有什么想法吗?

最佳答案

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

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

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

更多信息with this question .

关于java - 当消息太长时,log4j 不会记录整个消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34226186/

相关文章:

java - Spring - Thymeleaf - 404 错误

java - Jackson PrettyPrint for Spring 4

c - 使用 epoll 的多个 UDP 套接字 - 无法接收数据

c# - 确定无线网状网络中邻居的 IP 地址

java - 使用 Axis2 和 Netbeans 7 从 Web 服务服务器应用程序记录到 log4j 日志文件

java - 电锯 v2 中的存储大小

java - 实现迭代器出错并抛出异常

java - 在Intellij中删除和重新导入项目

c - UDP 存在另一个软件错误

debugging - 如何调试/记录 Tomcat JDBC 连接池的连接?