引起:org.apache.logging.log4j.LoggingException:log4j-slf4j-impl 不能与 log4j-to-slf4j 问题一起出现

pri*_*nka 4 java logging log4j

我正在编写 Junits 来测试我的日志。我正在使用 LogCaptor。我已附上我的实际方法和测试用例以及 pom.xml。

这是我定义日志的方法。

@Override
public ApplicationResponse createApplication (final String serviceId, final String appId) throws KMSException     {
    log.debug("Entering createApplication");
    try {
        final Application application =
            applicationOperations.createApplication(appId, serviceId);
        return applicationResponse(application);
    }
    catch (KMSCommonException exception) {
        throw new KMSInternalServerErrorException("Not able to create application", exception);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我test method要测试的记录器:

@Test
public void testCreateApplicationLogger () throws KMSException {
    String expectedInfoMessage = "Entering createApplication";

    LogCaptor logCaptor = LogCaptor.forClass(Test.class);
    adminAPIApplicationOpService.createApplication(TEST_SERVICE, TEST_APP + 1);
    assertTrue( logCaptor.getInfoLogs().contains(expectedInfoMessage));

}
Run Code Online (Sandbox Code Playgroud)

Pan*_*kos 6

这是一个冲突。运行命令

mvn dependency:tree -Dverbose -Dincludes=log4j-to-slf4j
Run Code Online (Sandbox Code Playgroud)

检查从何处导入该依赖项并将其排除。

原因是它log4j是一个API。您必须在项目中包含该 API 的实现才能正常工作。和log4j-slf4j-impl都是APIlog4j-to-slf4j的实现log4j。当您包含多个实现时,就会出现冲突。