У меня есть модульный тест, и единственное, что я получаю, это переполнение стека следующим образом:
java.lang.StackOverflowError
at org.apache.logging.log4j.util.StackLocator.getCallerClass(StackLocator.java:125)
at org.apache.logging.log4j.util.StackLocatorUtil.getCallerClass(StackLocatorUtil.java:55)
at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:39)
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:52)
at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
... many more
Я пытаюсь использовать log4j и slf4j. Я исключил logback, если я не получаю другую ошибку о приведении контекста log4j к контексту slf4j.
Я сократил файл build.gradle до минимума зависимостей:
testCompile ('org.springframework.boot:spring-boot-starter-test'){
exclude group: 'ch.qos.logback', module: 'logback-classic'
}
testCompile 'com.fedex.gss.extras:gss-extras-base'
testCompile 'org.mockito:mockito-core'
testCompile('junit:junit')
плюс импорт спецификации для log4j и springboot.
Любые идеи?
Большое спасибо.
Это может быть связано: slf4j.org/codes.html (ищите «StackOverflowError») и stackoverflow.com/questions/32366586/using-log4j2-with-slf4j.
Как упоминал @Arnaud, это обычно вызвано наличием обоих log4j-over-slf4j как slf4j-log4j. Первый гарантирует, что весь прямой доступ к log4j будет проходить через slf4j, а второй является связующим звеном между slf4j и log4j. Если вы объедините и то, и другое, вы окажетесь в бесконечном цикле между вызовами от slf4j к log4j и наоборот. С помощью gradle dependencies вы сможете узнать, откуда берется другая зависимость, и сможете ее исключить.
Спасибо, в итоге разобрался. Решение состояло в том, чтобы добавить следующие исключения к spring-boot-starters: exclude group: 'ch.qos.logback', module: 'logback-classic' exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' Затем добавить дополнительную зависимость compile 'org.slf4j:slf4j-jdk14' Спасибо всем вам.




Можем ли мы увидеть ваш код, чтобы можно было предложить подходящее решение, пожалуйста