将log4j2与slf4j一起使用

Aks*_*hay 23 java slf4j log4j2

所以我尝试在他们的网站上遵循这个(非maven实现)和要求,将slf4j添加到log4j.并尝试使用此代码

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

并将以下内容添加到我的库中

  • log4j的-API-2.3.jar
  • log4j的核心-2.3.jar
  • log4j的-sl4j-IMPL-2.3.jar
  • log4j的到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)...
Run Code Online (Sandbox Code Playgroud)

知道我哪里错了吗?

And*_*eas 47

你用log4j-slf4j-impl-2.3.jar和创建一个调用循环log4j-to-slf4j-2.3.jar.

log4j-slf4j-impl-2.3.jar 是将slf4j调用发送到log4j的适配器的实现.

log4j-to-slf4j-2.3.jar正在发送log4j调用回到slf4j.删除这个.

  • 您可以在Gradle中删除log4j-to-sl4j:configurations {all*.exclude group:'org.apache.logging.log4j',module:'log4j-to-slf4j'} (5认同)