JBoss AS 7.1.1 Final和Log4j +不工作

时间:2016-02-26 14:48:14

标签: java spring maven jboss log4j

在我的pom.xml中,我添加了以下依赖

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

正如jboss论坛中所建议的那样,我在战争项目中的WEB-INF下面添加了jboss-deployment-structure.xml。

<?xml version="1.0" encoding="UTF-8"?>  
<jboss-deployment-structure>  
   <deployment>
     <exclusions>  
        <module name="org.apache.log4j"/>
     </exclusions>  
   </deployment>
</jboss-deployment-structure> 

但仍然是服务器日志打印,我的控制台中没有应用程序日志。

我在classpath中的log4j.properties低于设置。

log4j.rootLogger=DEBUG, consoleAppender, fileAppender

# Redirect log messages to console
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.MaxFileSize=5MB
log4j.appender.fileAppender.MaxBackupIndex=10
log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.fileAppender.File=${jboss.server.base.dir}/log/wm/sample.log

控制台日志我得到的是

09:35:36,122 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-8) JBAS015850: /C:/Mohan/Software/jboss-as-7.1.1.Final/standalone/deployments/wm.ear/wm-web-0.0.1-SNAPSHOT.war/WEB-INF/jboss-deployment-structure.xml in subdeployment ignored. jboss-deployment-structure.xml is only parsed for top level deployments.

有人可以帮助我指出我在上面的内容中缺少什么吗?

修改

我的应用程序的结构是 - 每个都有自己的pom.xml,父代将有共同的pom.xml。我在war pom.xml中添加了所有与slf4j相关的依赖项。

parent(pom.xml)
  |
  | __ear(pom.xml)
  |
  | __war(pom.xml)
  |
  | __test(pom.xml)

2 个答案:

答案 0 :(得分:0)

如果您使用的是Spring,则可以从web.xml配置log4j

  <!-- Logging listener -->
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>file:yourpath/log4j.properties</param-value>
    <!-- You can also define yourpath with a environment variable and use it like file:${env_variable_path}/log4j.properties  -->
  </context-param>

此外,如果您仍然遇到问题,可以尝试使用jboos-deployment-structure.xml中的theese排除项

    <exclusions>
      <module name="org.apache.log4j" />
      <module name="org.slf4j" />
      <module name="org.apache.commons.logging" />
      <module name="org.log4j" />
      <module name="org.jboss.logging" />
    </exclusions>

我认为你需要覆盖其他日志记录机制。

答案 1 :(得分:0)

首先,不会在战争的pom中设置<scope>provided</scope>吗?

无论如何,从你得到的日志中我可以看到你将战争部署为耳档案的一部分。您需要在jboss-deployment-structure.xml中反映这一事实。 要了解如何引用JBoss AS7 docs或您使用的任何JBoss服务器的文档。

概述:您将jboss-deployment-structure.xml放入ear存档中。在xml中,您必须将war的配置定义为子部署:

<jboss-deployment-structure>  
   <deployment>
      ....
   </deployment>
   <sub-deployment name="wm-web-0.0.1-SNAPSHOT.war">
    <exclusions>
      <module name="org.apache.log4j" />
    </exclusions>
   </sub-deployment>
</jboss-deployment-structure>