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

使用log4j2与slf4j:java.lang.StackOverflow错误

娄利
2023-03-14

因此,我在他们的网站上尝试了遵循这一点(非maven实现)和将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)...

知道我哪里出错了吗?

共有3个答案

杨阳飇
2023-03-14

想法1:

上述答案是有效的。矿山是一个多模块项目,log4j-to-slf4j-2.3。jar依赖关系由另一个项目拉取。我必须扫描每一个项目,以找出哪个项目是吸引这一点。我使用以下命令在项目级别执行。

gradlew common:dependencies --configuration runtime

common是项目的名称configuration runtime-您可以根据需要更改此名称

想法二:

如果您使用的是具有多模块项目的spring。然后,您可以简单地在每个子项目的构建中添加以下配置。渐变相关性。渐变

configurations {
    all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
杨高翰
2023-03-14

以防万一,如果您的类路径中有logback,它也必须被删除!

申高峯
2023-03-14

您正在使用log4j-slf4j-impl-2.3.jarlog4j-to-slf4j-2.3.jar创建一个调用循环

log4j-slf4j-impl-2.3。jar是向log4j发送slf4j调用的适配器的实现。

log4j-to-slf4j-2.3。jar正在将log4j调用发送回slf4j。把这个拿走。

 类似资料:
  • 问题内容: 我习惯在普通的log4j上使用。现在,我切换到,无法使附加程序正常工作。 下面的附加程序可以正常工作。但是永远不会创建的日志文件。为什么? 问题答案: 该标记缺少属性。

  • 问题内容: 因此,我尝试按照其网站上的此(非Maven实现)和要求将slf4j添加到log4j。并尝试使用此代码 并将以下内容添加到我的库中 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 当我尝试运行它时,出现以下错误 知道我要去哪里错了

  • 我一直在尝试遵循这个网站和其他网站上的食谱,了解如何将log4j2 FileAppender实例添加到使用SLF4J API进行整体日志记录的类中,但我运气不佳。有人能告诉我下面的代码哪里出错了吗? assertTrue语句通过,因此文件由FileAppender创建,但assertEquals失败,因为日志线的长度为零(即日志文件没有内容)。 有什么想法吗?

  • 我正在尝试提供从log4j2到Spring Boot执行器日志。不幸的是,我只实现了如何为根记录器更改日志级别。也许有人知道如何连接执行器与log4j2?

  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

  • 下午好, 当我尝试使用SMTP Appender时,控制台中出现了一个奇怪的错误。加载XML文件时会出现此错误,因为除了标准输出之外,没有通过任何输出流记录该文件。appender的内容如下(我已经确认错误在这个XML块中)。我已经删除了我们的服务器信息。 无论它是否在记录器中被引用,我都会在运行程序并从日志管理器运行getLogger时立即收到以下错误。我已经删除了几个文件名,并用文件在那一点上