サブ展開として戦争を持っている耳を持っています。ear ファイルには、ejb-recievers 要素と webscheduler.war だけを持つ jboss-ejb-client.xml ファイルを含む META-INF ディレクトリがあります。この war は commons-logging-api.jar を使用します。このアプリケーションは 7.1.1.final として jboss にデプロイされます。ロギングにApache log4jを使用したい。そこで、ear の meta-inf ディレクトリに jboss-deployment-structure.xml を追加しました。
<jboss-deployment-structure>
<deployment>
<!-- Exclusions allow you to prevent the server from automatically adding some dependencies -->
<exclusions>
<module name="org.apache.log4j" />
<module name="org.log4j"/>
<module name="org.jboss.logging"/>
</exclusions>
</deployment>
<sub-deployment name="a.war">
<exclusions>
<module name="org.apache.log4j"/>
<module name="org.log4j"/>
<module name="org.jboss.logging"/>
</exclusions>
</sub-deployment>
</jboss-deployment-structure>
war の lib ディレクトリに commons-logging.properties ファイルがあり、次の内容が含まれています。
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
log4j.configuration=/usr/share/wth/jboss/jboss-as-7.1.1/standalone/configuration/log4j.xml
また、log4j-1.2.11.jar を除いて、lib には他のロギング フレームワーク jar がありません (SLF4j など)。ご覧のとおり、log4j.xml は上記のプロパティで記述されたディレクトリにあります。
問題は、jboss を起動したときに、いくつかのアプリケーション ログが log4j.xml (たとえば /a/b/c/srv.log) に記述されているログ ファイルに書き込まれますが、同時にログがデフォルトの srv にも書き込まれることです。 jboss ログ内に直接記録します (jboss/standalone/log/srv.log)。
jboss が独自のロギングを使用せず、提供した log4j 構成を使用するために欠けているものは何ですか。