2013-10-18 61 views
0

當服務器啓動時,我在控制檯中看到所有正確的log4j配置。但是,我沒有看到來自Spring框架的日誌消息。WebSphere,Log4j和SpringMVC

此外,我添加了一些代碼,輸出定義的記錄器,我看到我的彈簧記錄器被定義。爲什麼我沒有看到春天的日誌消息?

Enumeration loggers = Logger.getDefaultHierarchy().getCurrentLoggers(); 
while(loggers.hasMoreElements()){ 
    Logger logger = (Logger) loggers.nextElement(); 
    System.out.println(logger.getName()+","+logger.getLevel()); 
} 

SystemOut  O org.springframework,DEBUG 

我的web.xml文件是(log4j的/春款):

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

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

我的log4j.xml是:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="conversionPattern" value="%5p %d %C{1} - %m%n" /> 
     </layout> 
    </appender> 

    <!-- Loggers to filter out various class paths --> 
    <logger name="org.springframework" additivity="false"> 
     <level value="debug"/> 
     <appender-ref ref="ConsoleAppender" /> 
    </logger> 

</log4j:configuration> 

下面是我在控制檯中看到:

SystemOut  O log4j: System property is :null 
SystemOut  O log4j: Standard DocumentBuilderFactory search succeded. 
SystemOut  O log4j: DocumentBuilderFactory is: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl 
SystemOut  O log4j: debug attribute= "true". 
SystemOut  O log4j: Threshold ="null". 
SystemOut  O log4j: Retreiving an instance of org.apache.log4j.Logger. 
SystemOut  O log4j: Setting [org.springframework] additivity to [false]. 
SystemOut  O log4j: Level value for org.springframework is [debug]. 
SystemOut  O log4j: org.springframework level set to DEBUG 
SystemOut  O log4j: Class name: [org.apache.log4j.ConsoleAppender] 
SystemOut  O log4j: Setting property [target] to [System.Out]. 
SystemOut  O log4j: Setting property [threshold] to [DEBUG]. 
SystemOut  O log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
SystemOut  O log4j: Setting property [conversionPattern] to [%5p %d %C{1} - %m%n]. 
SystemOut  O log4j: Adding appender named [ConsoleAppender] to category [org.springframework]. 
SystemOut  O log4j: Level value for root is [debug]. 
SystemOut  O log4j: root level set to DEBUG 
SystemOut  O log4j: Adding appender named [ConsoleAppender] to category [root]. 

我試過的東西:

1)從this post

2的接受的答案)我刪除了很多,我認爲可能有干擾的log4j罐子。

  • 我取代SLF4J-jdk.jar與SLF4J-log4j.jar

3)添加彈簧log4j的偵聽到的web.xml(在appcontext.xml還試圖log4jInitialization豆)

回答

0

嘗試將「目標」屬性添加到您的控制檯appen中,如下所示:

<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="conversionPattern" value="%5p %d %C{1} - %m%n" /> 
     </layout> 
    </appender> 

PS我的log4j.xml文件(我在JBoss 7上使用它)的示例:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'> 

    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out"/> 
     <param name="Threshold" value="debug"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
     </layout> 
    </appender> 

    <logger name="org.springframework" additivity="false"> 
     <level value="debug"/> 
     <appender-ref ref="consoleAppender"/> 
    </logger> 

    <root> 
     <level value="WARN"/> 
     <appender-ref ref="consoleAppender"/> 
    </root> 

</log4j:configuration> 
0

您需要指定根記錄器。

<root> 
    <priority value="info"/> 
    <appender-ref ref="ConsoleAppender"/> 
</root> 

另外,正如@Ernestas所說,ConsoleAppender需要Target屬性。

0

結果是失蹤的作品是jcl-over-slf4j.jar。一旦我開始工作,我開始迴避所做的其他更改,以瞭解哪些是不必要的。歸根結底,這是我必須做的:

  1. 地址:JCL-過slf4j.jar,SLF4J-log4j12.jar
  2. 刪除:SLF4J-jdk.jar(公地logging.jar沒有干擾,所以 它停留)
  3. 添加的log4j.xml(見上文)在web.xml或appcontext.xml

log4j的具體的結構原來是不必要 - 至少在我的情況。

jar文件在我的lib文件夾中,我發現有自己的log4j。屬性文件中沒有干擾或者 - log4j interference - level keeps being set to "OFF"

順便說一下,下面的帖子是識別這些文件非常有用 - List contents of multiple jar files

0

我也有同樣的問題,我通過添加共享記錄的依賴,請嘗試修復此如果這也適用於你。下面是我在pom.xml中添加的依賴關係。

 <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.0.3</version> 
     </dependency>