有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Log4j2抛出NoSuchMethodError

我从log4j22.0-beta9升级到了2.0,包括log4j-corelog4j-api

我的应用程序以前运行良好,现在出现以下错误:

Caused by: java.lang.NoSuchMethodError: org.apache.logging.log4j.core.Logger.log(Lorg/apache/logging/log4j/Marker;Ljava/lang/String;Lorg/apache/logging/log4j/Level;Lorg/apache/logging/log4j/message/Message;Ljava/lang/Throwable;)V
    at org.apache.log4j.Category.forcedLog(Category.java:336)
    at org.apache.log4j.Category.log(Category.java:423)
    at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.log(Log4jMLog.java:171)
    at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.log(Log4jMLog.java:183)
    at com.mchange.v2.cfg.MConfig.dumpToLogger(MConfig.java:101)
    at com.mchange.v2.cfg.MConfig.dumpToLogger(MConfig.java:98)
    at com.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:154)
    at com.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)

这里可能出了什么问题?为什么log4j会失败

也许我必须从c3p0重定向日志记录?如何在log4j2中编写以下语句

com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog

我发现以下语句将阻止c3p0日志记录,因此是我当前的解决方法:

System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");

但我希望将日志重定向到log4j2,因此仍在寻找解决方案


共 (2) 个答案

  1. # 1 楼答案

    更新:在撰写本文时,最新版本是Log4j 2.6.2。这是无垃圾的,所以如果您仍然使用旧版本,请升级

    关于错误:您还记得将适配器模块(log4j-1.2-api-2.0-beta9.jar)从beta9升级到2.0吗

  2. # 2 楼答案

    是的,测试版有这个问题。升级到2。X