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'
`
請檢查[這個答案](http://stackoverflow.com/questions/21739578/how-to-disable-spring-logging-debug-messages/21748252#21748252),看看是否有幫助。 –
考慮使用logback而不是log4j。它速度更快,你可以包含jlf的slf4j映射jar到slf4j,這將允許你設置spring的日誌級別。 – DwB