これが以前に尋ねられたことは知っていますが、どの質問に対する回答も私の問題を解決しませんでした。JBoss 4.2.0 GA で完全に動作する .WAR ファイルとしてパッケージ化されたアプリケーションがあります。アプリケーションは log4j.xml 設定を正常にロードします。私の log4j.xml ファイルは次のようになります。
<?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 AS 7.1.1 Final で同じ log4j.xml ファイルを使用して、この同じアプリケーションを使用しようとしています。何が起こっているかというと、JBoss は定義済みのアペンダーにログを記録するのではなく、標準出力にのみログを記録しています。
いくつかの質問を読んで、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>
ただし、カスタムアペンダーにまだログが表示されないため、これは問題の解決には役立ちませんでした。
PS: 私の WEB-INF/lib フォルダーには、必ず log4j-1.2.16.jar ファイルを配置しました。
どんな助けでも大歓迎です。