2014-12-05 69 views
1

我得到一個錯誤信息,提示日誌沒有找到,雖然我確實有log4j2依賴和罐子存在以及我從春天核心jar排除公用日誌。然而有些事情仍然是錯誤的,我不知道是什麼?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; 

這是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? – 2014-12-05 01:03:44

+0

@BeshoyFayez是的,我意識到,slf4j不neede,我刪除它。我已經按照你所說的完成了 - 不包括所有來自sping的commons loggin,但同樣的東西 – 2014-12-05 01:08:03

+0

@BeshoyFayez slf4j和log4j不是互斥的,**它可以同時使用**其中slf4j只是所有代碼引用的日誌記錄外觀,而log4j是實際的日誌執行提供者 – gerrytan 2014-12-05 03:50:27

回答

1

的一部分,還有就是你要使用的延伸org/apache/commons/logging/Log和橋樑進入公共日誌記錄commons logging bridge log4j2。

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

這個橋仍然沒有解決問題,但是謝謝:) – 2014-12-05 12:40:39

+1

您還需要添加回公共日誌記錄。然後該橋將日誌記錄調用路由到log4j2實現。 – 2014-12-06 22:56:59

0

歡迎來到日益混亂的Java日誌!

首先你的堆棧跟蹤不意味着log4j2丟失,但是commons-logging改爲(org/apache/commons/logging/Log是來自commons-logging軟件包的一種類型)。事實上它缺少,因爲你明確排除它,但你的代碼中的東西正在尋找它。

所以也許這個問題應該是:如果你的代碼中的任何東西都在尋找commons-logging?你真正想使用什麼記錄外觀/實現?

+0

是的,它是相當混亂:(我從來沒有真的必須建立log4j之前,我只是用於每個項目 - 但是因爲它的一個新項目它需要設置,它驅使我「£$」%^ $ ^& 「!!嘿嘿......無論如何,我看着,在代碼中我指定」你應該尋找公地「,但到處都是log4j – 2014-12-05 12:40:18