2013-10-22 184 views
2

我知道這已被問過,但沒有任何問題的答案解決了我的問題。 我有一個打包成.WAR文件的應用程序,它完美的適用於JBoss 4.2.0 GA:應用程序成功加載了我的log4j.xml設置。我的log4j.xml文件看起來如下:JBoss AS 7.1.1 Final和Log4j

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <!-- Appenders --> 
    <appender name="INFO" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/root/OnlineApp/logs/info.log" /> 
    <param name="MaxFileSize" value="10MB"/> 
    <param name="MaxBackupIndex" value="10"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss.SSS},%X{deviceId},%p,%m%n" /> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param name="LevelMin" value="INFO" /> 
     <param name="LevelMax" value="WARN" /> 
    </filter> 
    </appender> 
    <appender name="DEBUG" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/root/OnlineApp/logs/debug.log" /> 
    <param name="MaxFileSize" value="10MB"/> 
    <param name="MaxBackupIndex" value="10"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss:SSS.SSS},%X{deviceId},%p,%m%n" /> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param name="LevelMin" value="TRACE" /> 
     <param name="LevelMax" value="DEBUG" /> 
    </filter> 
    </appender> 
    <appender name="ERRORS" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/root/OnlineApp/logs/error.log" /> 
    <param name="MaxFileSize" value="10MB"/> 
    <param name="MaxBackupIndex" value="10"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss.SSS},%X{deviceId},%p,%m%n" /> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param name="LevelMin" value="WARN" /> 
     <param name="LevelMax" value="FATAL" /> 
    </filter> 
    </appender>  
    <appender name="DATABASE" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="/root/OnlineApp/logs/db.log" /> 
    <param name="MaxFileSize" value="10MB"/> 
    <param name="MaxBackupIndex" value="10"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss.SSS},%X{deviceId},%p,%m%n" /> 
    </layout> 
    </appender> 
    <!-- Loggers --> 
    <logger name="OnlineApp" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="INFO"/> 
    <appender-ref ref="ERRORS"/> 
    <appender-ref ref="DEBUG"/> 
    </logger> 
    <logger name="DatabaseLogger" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="DATABASE"/> 
    </logger> 

</log4j:configuration> 

現在,我試圖使用相同的應用程序使用與JBoss相同的log4j.xml文件7.1.1決賽。發生什麼事是JBoss是只有登錄到標準輸出而不是記錄到我定義的appender。

讀了一些問題後,我被告知要在META-INF下創建一個jboss-deployment-structure.xml文件。所以,我創建了一個具有以下配置:

<jboss-deployment-structure> 
    <deployment> 
    <exclusions> 
     <module name="org.apache.log4j"/> 
     <module name="org.apache.commons.logging"/> 
    </exclusions> 
    </deployment> 
</jboss-deployment-structure> 

然而,這並沒有幫助解決我的問題,因爲我還沒有在我的自定義的appender看到任何日誌。

P.S:在我的WEB-INF/lib文件夾中,我確定要放置一個log4j-1.2.16.jar文件。

任何幫助,非常感謝。

回答

2

我終於搞定了。在您的META-INF文件夾下,創建一個名爲jboss-deployment-structure.xml的新文件,並確保其中包含以下內容:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
     <exclusions> 
      <module name="org.apache.commons.logging" /> 
      <module name="org.apache.log4j" /> 
      <module name="org.jboss.logging" /> 
      <module name="org.jboss.logging.jul-to-slf4j-stub" /> 
      <module name="org.jboss.logmanager" /> 
      <module name="org.jboss.logmanager.log4j" /> 
      <module name="org.slf4j" /> 
      <module name="org.slf4j.impl" /> 
     </exclusions> 
    </deployment> 
</jboss-deployment-structure> 
相關問題