当前位置: 首页 > 知识库问答 >
问题:

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

万涵亮
2023-03-14

我正在使用org。slf4j:slf4j-log4j12:1.7。12。这是我的log4j。属性

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上有不同的输出。e、 g.如果消息有17000个字符,从控制台我得到14000个字符,从udp我得到8000个字符。我认为这里的问题可能与每行配置的最大长度有关,对吗?尽管如此,我还是找不到那个特定的属性。

你对此有什么想法吗?

共有1个答案

陈铭晨
2023-03-14

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

理论上,UDP数据包的大小约为65000字节,但需要考虑传输的MTU(最大传输单元)大小,这可能会使数据包更小。

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

更多关于这个问题的信息。

 类似资料:
  • 应用程序有一个JMS队列负责交付审计日志。应用程序将日志发送到JMS队列,该队列由MDB使用。 但是,发送的消息是大 XML 文件,大小从 20 MB 到 100 MB 不等。问题在于 JMS 队列使用消息的时间太长,从而导致内存不足错误。 我应该怎么做才能解决这个问题?

  • 我正在用Java编写一个REST服务(在Tomcat 9上使用JAX-RS标准),我想向我的程序添加日志,以便在调用时跟踪他的工作。 因此,我使用Log4j(版本1.2.17)来编写日志,我想为在REST服务上运行的每个服务编写不同的日志文件,但我只需要为整个应用程序使用一个Log4j属性 所以我想在我的日志文件夹中保存这种日志 所以我把它写成Log4j(restServiceLogger.pro

  • 问题内容: 我刚刚在工作中获得了一个现有的Web应用程序,该应用程序应该使用Log4J记录其活动。我已经按照告诉我的方式配置了工作空间,其他所有内容(数据库连接,身份验证等)都可以正常工作,只是没有任何内容写入日志文件。其他类似的应用程序没有问题记录。 我已经在应用程序启动时查看了WebSphere控制台,那里没有错误可能表明Log4J没有记录的原因。 我向另一个开发人员提到了这一点(该开发人员曾

  • 问题内容: 编辑:糟糕,我想如果发布删除代码会有所帮助。抱歉。 我正在使用Spring Data / JPA V 1.4.2.RELEASE和hibernate3.6.10.Final。 我遇到的情况是删除一个实体,删除似乎可以正常工作,但是当我刷新网页时,该实体会重新出现。因此,它不会产生错误,但不会删除记录。 该实体中包含子实体。我怀疑某种实体依赖问题会阻止实体真正被“删除”,但我不知道它可能

  • 我们的日志服务器通过 json 格式的 kubernetes pods sysout 和索引 json 字段来使用我们的日志消息。我们需要在消息中指定一些预定义的字段,以便我们可以跨 Pod 跟踪事务。对于我们的一个容器,我们使用 Liberty 配置文件,并且有问题来配置日志记录以满足这些需求。 一个想法是使用log4j在控制台中发送自定义的json消息。但是所有消息都被 Liberty 日志系

  • 首先,我知道这个查询有点混乱,但它可以正常工作,直到至少有一条记录存在,并且设置为true,此时没有返回任何记录。如果有另一条记录的设置为false或两者的组合,则它可以正常工作,即返回的记录的所有票证总数都设置为0或适当的值。 我已将查询更新为,并将票证表联接更改为left(也尝试了full outer),但它仍然存在上述问题。 为什么会发生这种情况,我能做些什么来防止它?