2014-05-07 54 views
0

我想通過log4j.xml來配置彈簧框架日誌級別。我的文件是這樣的:彈簧框架卡在調試日誌級別

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> --> 
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> 
<configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
<!-- Create a console appender --> 
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> 
     <param name="threshold" value="debug" /> 
     <param name="Target" value="System.out" /> 
     <param name="ImmediateFlush" value="true" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %-45.45c: %m%n" /> 
     </layout> 
    </appender> 

    <!-- Change the logging of some known libraries, no need for most of the 
     chatter --> 
    <category name="org.apache"> 
     <priority value="ERROR" /> 
    </category> 
    <category name="org.springframework"> 
     <priority value="ERROR" /> 
    </category> 
    <category name="org.springframework.data"> 
     <priority value="INFO" /> 
    </category> 
    <category name="com.mchange"> 
     <priority value="INFO" /> 
    </category> 

    <!-- <category name="com.ssv.mq.service"> <priority value="INFO"/> </category> --> 

    <category name="com.ro"> 
     <priority value="INFO" /> 
    </category> 


    <!-- Perhaps add some extra logging for org.springframework.jdbc.core --> 
    <category name="org.springframework.jdbc.core"> 
     <priority value="INFO" /> 
    </category> 

    <!-- Setup the root logger --> 
    <root> 
     <priority value="INFO"></priority> 
<!--  <appender-ref ref="EMAIL_ASYNC" /> --> 
     <appender-ref ref="CONSOLE"/> 
    </root> 
</configuration> 

然而,春天遍記錄調試信息,這裏是catalina.out中的一個樣本:

15:46:03.535 [http-bio-8080-exec-3] DEBUG o.s.s.w.u.m.AntPathRequestMatcher - Checking match of request : '/oauth/token'; against '/oauth/cache_approvals' 
15:46:03.536 [http-bio-8080-exec-3] DEBUG o.s.s.w.u.m.AntPathRequestMatcher -  Checking match of request : '/oauth/token'; against '/oauth/uncache_approvals' 
15:46:03.536 [http-bio-8080-exec-3] DEBUG o.s.s.w.u.m.AntPathRequestMatcher - Checking match of request : '/oauth/token'; against '/oauth/token' 
15:46:03.536 [http-bio-8080-exec-3] DEBUG o.s.security.web.FilterChainProxy - 
/oauth/token?grant_type=password&client_id=my-trusted-client-with-secret&client_secret=somesecret&username=seema&[email protected] at position 1 of 7 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' 

請注意,我沒有那麼多的Spring專家,所以它可能像maven中的一些缺失依賴(slf4j或其他)那樣簡單。

我可以肯定的是,log4j.xml位於正確的位置,並且它從spring被加載。

編輯:

I added the debug flags as suggested by stephane and here is the output: 
    delegate: false^M 
    repositories:^M 
    /WEB-INF/classes/^M 
----------> Parent Classloader:^M 
[email protected]^M 
. 
log4j: Using URL [file:/var/lib/tomcat7/webapps/propspace-api/WEB-INF/classes/log4j.xml] for automatic log4j configuration. 
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 
log4j: debug attribute= "null". 
log4j: Ignoring debug attribute. 
log4j: reset attribute= "false". 
log4j: Threshold ="null". 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.apache] additivity to [true]. 
log4j: Level value for org.apache is [ERROR]. 
log4j: org.apache level set to ERROR 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.springframework] additivity to [true]. 
log4j: Level value for org.springframework is [ERROR]. 
log4j: org.springframework level set to ERROR 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.springframework.data] additivity to [true]. 
log4j: Level value for org.springframework.data is [ERROR]. 
log4j: org.springframework.data level set to ERROR 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [org.springframework.jdbc.core] additivity to [true]. 
log4j: Level value for org.springframework.jdbc.core is [WARN]. 
log4j: org.springframework.jdbc.core level set to WARN 
log4j: Level value for root is [WARN]. 
log4j: root level set to WARN 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Setting property [threshold] to [DEBUG]. 
log4j: Setting property [target] to [System.out]. 


`So far so good, but two lines later, i'm still getting the spring debug messages: 
`17:26:00.630 [localhost-startStop-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.security.methodSecurityMetadataSourceAdvisor' 
17:26:00.630 [localhost-startStop-1] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor' 
` 
+1

請檢查[這個答案](http://stackoverflow.com/questions/21739578/how-to-disable-spring-logging-debug-messages/21748252#21748252),看看是否有幫助。 –

+0

考慮使用logback而不是log4j。它速度更快,你可以包含jlf的slf4j映射jar到slf4j,這將允許你設置spring的日誌級別。 – DwB

回答

0

感謝斯特凡, This post實際上引導了我排除的依賴關係的logback和JCL-過SLF4J。現在它工作正常。