2014-12-05 1 views
1

log4j2 종속성이 있지만 jars가 존재하고 spring core jar에서 commons-logging을 제외 시켰지만 로깅을 찾을 수 없다는 오류 메시지가 나타납니다. 아직 뭔가 잘못 됐고 무엇을 몰라? 여기 Log4j2 스프링을 사용할 때 찾을 수 없습니까?

오류입니다 :

SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/orderlybilling]] 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/orderlybilling]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    ... 6 more 
Caused by: java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log; 

그리고 이것은 당신이에 org/apache/commons/logging/Log 및 교량을 확장 평민 로깅에 사용하려는 commons logging bridge가 pom.xml 파일

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.1.2.RELEASE</version> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.1.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.1.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.7</version> 
    </dependency> 
+0

모든 Spring 종속성에서 "commons-logging"을 제외해야합니다. 그리고 왜 log4j와 slf4j를 모두 가지고 있습니까? –

+0

@BeshoyFayez 그렇습니다. slf4j가 neede가 아니라는 것을 깨달았습니다. 내가 말했듯이 - sping에서 모든 commons loggin은 제외하지만 똑같은 것을 stoy하십시오 –

+0

@BeshoyFayez slf4j와 log4j는 상호 배타적이지 않습니다. ** slf4j는 모든 코드에서 참조하는 로깅 외관 일뿐입니다. , 그리고 log4j는 실제 로깅 구현 공급자입니다. – gerrytan

답변

1

의 일부입니다 log4j2.

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-jcl</artifactId> 
    <version>2.1</version> 
</dependency> 
+0

이 브리지는 여전히 문제를 해결하지 못했지만 감사합니다. –

+1

또한 commons-logging을 다시 추가해야합니다. 그러면 브릿지는 로깅 호출을 log4j2 구현으로 라우팅합니다. –

0

Java 로깅의 복잡한 세계에 오신 것을 환영합니다!

첫 번째로 의미없는 스택 추적은 log4j2가 없음을 나타내지 만 대신 commons-logging (org/apache/commons/logging/Log는 commons-logging 패키지의 유형 임)을 나타냅니다. 명시 적으로 제외 시키므로 코드가 누락되었습니다. 코드에서 코드를 찾으려고합니다.

그럼 어쩌면 질문해야합니다 : 귀하의 코드에서 아무것도 commons-logging을 찾고 있습니까? 어떤 로깅 외관/구현을 실제로 사용하고 싶습니까?

+0

그래, 꽤 혼란 스럽네요. (전에는 log4j를 설치하지 않았는데, 각 프로젝트마다 하나씩 사용하고 있었지만, 새로운 프로젝트가 나왔기 때문에 "£ $"%^$^& "!! hehe ... 어쨌든 내가 보았고 코드에서"당신은 커먼을 찾아야 만합니다 "라고 지정했지만, 어디에서나 log4j가 대신 사용됩니다 –