2014-06-06 67 views
1

在我的spring應用程序中,我試圖使用slf4j-log4j日誌記錄機制,但它似乎不適用於我。它也沒有給出任何錯誤,也沒有初始化記錄機制。寫在pom.xml中春季應用程序無法使用slf4j-log4j初始化日誌記錄

依賴關係如下...

 <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${springVersion}</version> 
     <exclusions> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 

    <!-- log4j and slf4j --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.14</version> 
     <scope>provided</scope> 
    </dependency> 

log4j.properties文件是如下

log4j.rootLogger=INFO, file, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{mm:ss} (%F:%M:%L)%n%m%n%n 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=D:/logs/ov/ov 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %m %n 
log4j.appender.file.DatePattern=yyyy-MM-dd-HH'.log' 

項目運行良好...但日誌沒有得到建成。這是控制檯顯示,當我在Tomcat

Jun 06, 2014 7:54:08 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.7.0_10\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin;C:\Program Files (x86)\Java\jdk1.7.0_10\bin;D:\Installations\apache-maven-3.0.4\bin;D:\eclipse;;. 
Jun 06, 2014 7:54:08 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:onevalue' did not find a matching property. 
Jun 06, 2014 7:54:08 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Jun 06, 2014 7:54:08 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Jun 06, 2014 7:54:08 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1063 ms 
Jun 06, 2014 7:54:08 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Jun 06, 2014 7:54:08 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.35 
Jun 06, 2014 7:54:17 PM org.apache.catalina.startup.TaglibUriRule body 
INFO: TLD skipped. URI: http://tiles.apache.org/tags-tiles is already defined 
Jun 06, 2014 7:54:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
Jun 06, 2014 7:54:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
Jun 06, 2014 7:54:23 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'onevalue' 
Jun 06, 2014 7:54:27 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Jun 06, 2014 7:54:27 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jun 06, 2014 7:54:27 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 18184 ms 

回答

0

運行項目,我可以看到的唯一的事情是,你用的是很老的版本,所有這些庫的,而且可能提供的範圍不適合您的配置。 Maven docs on provided

提供

這很像編譯,而是指你所期望的JDK或容器,以提供在運行時的依賴。例如,在爲Java Enterprise Edition構建Web應用程序時,您可以將Servlet API和相關Java EE API的依賴性設置爲範圍,因爲Web容器提供了這些類。此範圍僅在編譯和測試類路徑中可用,且不是傳遞性的。

試試這個:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>1.7.7</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.7</version> 
</dependency> 
<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.7</version> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 
<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.14</version> 
</dependency> 
+0

嗨durron,感謝您的答覆。你的回答是正確的,我在其他項目中也是這樣做的。但是在這裏我不能使用最新的slf4j庫,並且需要堅持使用slf4j的1.6.1版本,如果我使用最新版本,它將與1.6.1放置在共享路徑上發生衝突。所以我只是在pom.xml中更改了slf4j的版本。但噗,它停止工作,甚至沒有一個例外。而且我現在不知道如何使它工作。任何信息? –

+0

是的...當我用提供的標記我的slf4j v1.6.1相關性時,日誌記錄不會被初始化。他們在默認情況下工作,即沒有範圍標籤。儘管我已經交叉檢查了我的classpath中是否有slf4j和slf4j-log4j12 v1.6.1 jar包。 –