spring框架卡在调试日志级别上

时间:2014-05-07 11:52:20

标签: java spring log4j

我试图通过log4j.xml配置spring框架日志记录级别。我的文件看起来像这样:

<?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>

但是,spring正在记录调试信息,这里是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&password=jrd@123456 at position 1 of 7 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'

请注意,我并不是那么多春季专家,所以它可能就像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
org.apache.catalina.loader.StandardClassLoader@69fc49ef^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 个答案:

答案 0 :(得分:1)

谢谢Stephane, This post实际上引导我将依赖项排除在logback和jcl-over-slf4j之外。现在它工作正常。