【问题标题】:log4j error java.lang.NoSuchMethodError: org.apache.log4j.spi.LoggingEvent.getTimestamp()Jlog4j 错误 java.lang.NoSuchMethodError: org.apache.log4j.spi.LoggingEvent.getTimestamp()J
【发布时间】:2021-08-12 21:32:04
【问题描述】:

我正在使用 log4j -1.2.13slf4j-api-1.7.15 jarslf4j-nop-1.7.15 jar java 11,tomcat 9 版本。 我得到的错误少于 2 个

  1. java.lang.NoSuchMethodError: org.apache.log4j.spi.LoggingEvent.getTimestamp()J

  2. 无法为元素 AsyncLogger 调用类 org.apache.logging.log4j.core.asyc.AsyncLoggerConfig 中的工厂方法:java.lang.NoClassDefFoundError : com/lmax/disruptor/EventFactory java.lang.reflect.InvocationException

【问题讨论】:

  • 您的项目中必须有其他日志记录依赖项(可能是slf4j-log4j12log4j-core?)。如果您使用的是 Gradle 或 Maven,请将所有项目依赖项添加到您的问题中。否则查找名称以log4jslf4jcommons-logginglogback、...开头的其他库
  • 我正在使用 Maven 和 commons-logging、slf4j、lo4j jars。
  • 拜托,edit 你的问题并添加你的pom.xml 文件的内容:可能有一些传递依赖,这会导致这些问题。
  • 我们不是直接在 pom.xml 中添加依赖项,而是从 repo 中下载 jars 到 maven 并再次构建 war 并提供构建然后部署。
  • 问题在ecs环境中。

标签: java tomcat log4j


【解决方案1】:

您必须有一组不一致的日志库:

  1. LoggingEvent#getTimestamp 是在 log4j-1.2.15 中引入的,所以你只需要升级你的库。
  2. org.apache.logging.log4j.core.asyc.AsyncLoggerConfig 是 Log4j 2.x 中的一个类,这意味着您的类路径中至少有两个版本的 Log4j。该错误是由您的配置文件使用不存在的com/lmax/disruptor/EventFactory 类引起的。

【讨论】:

  • 我只有 1 个版本的 log4j-1.2.13。
猜你喜欢
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2016-09-10
  • 2020-06-20
相关资源
最近更新 更多