java - 将log4j2与slf4j一起使用:java.lang.StackOverflowError

标签 java slf4j log4j2

因此,我尝试按照this(非Maven实现)及其web site中的要求将slf4j添加到log4j。并尝试使用此代码

public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Main.class);
        logger.info("test");
    }

并将以下内容添加到我的库中
  • log4j-api-2.3.jar
  • log4j-core-2.3.jar
  • log4j-sl4j-impl-2.3.jar
  • log4j-to-sl4j-2.3.jar
  • slf4j-api-1.7.12.jar

  • 当我尝试运行它时,出现以下错误
    Exception in thread "main" java.lang.StackOverflowError
        at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
        at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:964)
        at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:40)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:37)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:29)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:284)
        at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:37)
        at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:29)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:284)...
    

    知道我要去哪里错了吗?

    最佳答案

    您正在使用log4j-slf4j-impl-2.3.jarlog4j-to-slf4j-2.3.jar创建一个调用循环。
    log4j-slf4j-impl-2.3.jar是将slf4j调用发送到log4j的适配器的实现。
    log4j-to-slf4j-2.3.jar正在将log4j调用发送回slf4j。删除这个。

    关于java - 将log4j2与slf4j一起使用:java.lang.StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921632/

    相关文章:

    java - Java中的修饰符关键字顺序

    java - 每个请求在一个文件中记录不同的日志框架

    java - 使用 mvn exec :java 时忽略 log4j.properties

    Javax.servlet.ServletException

    slf4j 1.7.7 上的 log4j 2.0.2 在启动时找不到 log4j.xml?

    java - 我可以使用带有 log4j.properties 文件的 log4j 1.x 异步运行我的日志吗?

    log4j - Jooq 找不到 log4j2 记录器

    java - Java中字节数组的内存使用

    java - 在 Java 中使用 && 和相同的变量分配给一个变量是否正确?

    Java Graphics - 当我点击 -> all before works 时,repaint() 不起作用