3

サブ展開として戦争を持っている耳を持っています。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 構成を使用するために欠けているものは何ですか。

4

1 に答える 1

2

jboss-deployment-structure.xml は次のようになります。

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

また、プロジェクトの lib ディレクトリに独自の jar を含める必要があります。例えば:

EAR
|-- META-INF
|   |-- jboss-deployment-structure.xml
|   `-- MANIFEST.MF
|-- lib
|   |-- log4j.jar
|   `-- commons.logging.jar
`-- a.war

フラグを付けてデプロイしていることを確認してください-Dorg.jboss.as.logging.per-deployment=false。そうしないと、ロギングが機能しない可能性があります。

例:

$ cd $JBOSS_HOME/bin
$ ./standalone.sh -Dorg.jboss.as.logging.per-deployment=false
于 2013-03-06T22:57:38.617 に答える