2017-02-06 71 views
0

我有一個彈簧啓動應用程序,我正在努力使用滾動appender策略來獲取日誌記錄。對如何使用Spring引導日誌記錄感到困惑

這裏是我的pom.xml的相關部分

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.0.RELEASE</version> 
    </parent> 

    <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>phoenix</groupId> 
     <artifactId>phoenix</artifactId> 
     <version>4.1.0-client-hadoop2</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>20030825.184428</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.directory.studio</groupId> 
     <artifactId>org.apache.commons.pool</artifactId> 
     <version>1.6</version> 
    </dependency> 
    </dependencies> 

當我剛剛運行我單獨留下pom.xml中的應用程序,我得到這個錯誤:

java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details. 

我在讀了做排除,所以我想我需要將排除添加到啓動啓動器,如下所示:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
    <exclusions> 
    <exclusion> 
     <artifactId>log4j-over-slf4j</artifactId> 
     <groupId>org.slf4j</groupId> 
    </exclusion> 
    </exclusions> 
</dependency> 

然後當我r取消它,我得到這個其他錯誤:

java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.impl.Log4jLoggerFactory loaded from file:/C:/maven/repo/phoenix/phoenix/4.1.0-client-hadoop2/phoenix-4.1.0-client-hadoop2.jar). If you are using Weblogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml Object of class [org.slf4j.impl.Log4jLoggerFactory] must be an instance of class ch.qos.logback.classic.LoggerContext 

因此,在談論一些矛盾我想與鳳驅動程序,但我不明白爲什麼。當我加載我的pom.xml並查看Dependency Heirarchy並查找該jar時,它不會列出任何我可以嘗試排除的內容。

所以在這一點上,我不知道如何繼續。

+0

那罐子很可能是捆綁在它裏面一些依賴。檢查JAR內部並嘗試獲取沒有捆綁依賴關係的版本。我甚至無法在maven中找到它。這個JAR從哪裏來? – Strelok

回答

0

要刪除的logback做到這一點:

 <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
      <exclusions> 
       <exclusion> 
        <artifactId>log4j-over-slf4j</artifactId> 
        <groupId>org.slf4j</groupId> 
       </exclusion> 
       <exclusion> 
        <artifactId>logback-classic</artifactId> 
        <groupId>ch.qos.logback</groupId> 
       </exclusion> 
      </exclusions> 
     </dependency>