jboss为7.1.1最终日志记录

时间:2013-03-06 21:22:32

标签: log4j jboss7.x apache-commons-logging jboss-logging

我的耳朵有一个战争作为子部署。 ear文件有一个META-INF目录,它有一个jboss-ejb-client.xml文件,它只有一个ejb-recievers元素和一个webscheduler.war。这场战争使用了commons-logging-api.jar。此应用程序在jboss上部署为7.1.1.final。我想使用apache log4j进行日志记录。所以我在耳朵的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>

我在战争的lib目录中有一个commons-logging.properties文件,其中包含以下内容,

    org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

log4j.configuration =的/ usr /共享/第w / JBoss的/ JBoss的-AS-7.1.1 /独立/配置/的log4j.xml

除了log4j-1.2.11.jar之外,我在lib中没有任何其他日志框架jar(如SLF4j等)。如您所见,log4j.xml位于上述属性描述的目录中。

问题是当我启动jboss时,一些应用程序日志会写入log4j.xml中描述的日志文件(比如/a/b/c/srv.log),但同时日志也会被写入直接在jboss日志中使用默认的srv.log。(jboss / standalone / log / srv.log)。

我缺少jboss不使用自己的日志记录并使用我提供的log4j配置。

1 个答案:

答案 0 :(得分: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