代码之家  ›  专栏  ›  技术社区  ›  Mouhammed Soueidane

JBoss AS 7.1.1最终和Log4j

  •  2
  • Mouhammed Soueidane  · 技术社区  · 12 年前

    我知道以前有人问过这个问题,但没有一个问题的答案能解决我的问题。 我有一个打包为.WAR文件的应用程序,它可以在JBoss 4.2.0 GA上完美工作:该应用程序成功加载了我的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 记录到标准输出,而不是记录到我定义的appenders。

    阅读了其中的一些问题,我被告知要在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>
    

    然而,这并没有帮助解决我的问题,因为我在自定义附加程序中仍然没有看到任何日志。

    P.S:在我的WEB-INF/lib文件夹中,我已经确保放置了一个log4j-1.2.16.jar文件。

    非常感谢您的帮助。

    1 回复  |  直到 12 年前
        1
  •  2
  •   Mouhammed Soueidane    12 年前

    我终于成功了。在META-INF文件夹下,创建一个名为jboss-deployment-structure.xml的新文件,并确保其中包含以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
        <deployment>
            <exclusions>
                <module name="org.apache.commons.logging" />
                <module name="org.apache.log4j" />
                <module name="org.jboss.logging" />
                <module name="org.jboss.logging.jul-to-slf4j-stub" />
                <module name="org.jboss.logmanager" />
                <module name="org.jboss.logmanager.log4j" />
                <module name="org.slf4j" />
                <module name="org.slf4j.impl" />
            </exclusions>
        </deployment>
    </jboss-deployment-structure>