2016-01-15 73 views
1

我在5月的Spring應用程序中增加了安全問題,所以我想調試Spring到log4j調試彈簧配置不起作用

Log4j正在工作,因爲我的服務將調試信息記錄到控制檯。 但春天不會記錄到我的控制檯

這裏是我的log4j.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> 
    <appender name="CA" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{MM/dd/yy - HH\:mm\:ss,SSS} [%t] %-5p %c %x - %m%n" /> 
     </layout> 
    </appender> 
    <logger name="org.springframework" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="CA"/> 
    </logger> 
    <logger name="com.test" additivity="false"> 
     <level value="INFO"/> 
     <appender-ref ref="CA"/> 
    </logger> 
</log4j:configuration> 

大家都考慮到,因爲我所以把--Dlog4j.debug在我的服務器啓動選項。結果:

log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: org.apache.xerces.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.springframework] additivity to [false]. 
log4j: Level value for org.springframework is [DEBUG]. 
log4j: org.springframework level set to DEBUG 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{MM/dd/yy - HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n]. 
log4j: Adding appender named [CA] to category [org.springframework]. 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [com.test] additivity to [false]. 
log4j: Level value for com.testis [INFO]. 
log4j: com.testlevel set to INFO 
log4j: Adding appender named [CA] to category [com.test]. 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: org.apache.xerces.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.springframework] additivity to [false]. 
log4j: Level value for org.springframework is [DEBUG]. 
log4j: org.springframework level set to DEBUG 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{MM/dd/yy - HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n]. 
log4j: Adding appender named [CA] to category [org.springframework]. 
log4j: Retreiving an instance of org.apache.log4j.Logger. 
log4j: Setting [com.test] additivity to [false]. 
log4j: Level value for com.test is [INFO]. 
log4j: com.test level set to INFO 
log4j: Adding appender named [CA] to category [com.test]. 

我嘗試在此​​

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>/WEB-INF/classes/log4j.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 

說我用這個調試中其他應用程序,我真的沒有看到的原因在我的web.xml中添加此... 感謝您的幫助

回答

1

我發現它!

使用-Dorg.apache.commons.logging.diagnostics.dest = STDOUT,您可以調試公用日誌配置。

我發現我的依賴項(jcl-over-slf4j-1.5.8.jar)中的一個jar包含一個META-INF/services/org.apache.commons.logging.LogFactory,它將記錄器定義爲SLF4J。

因此,添加-Dorg.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.LogFactoryImpl,我將記錄器恢復爲log4j。