TomEE 和 Log4j RollingFileAppender

TomEE and Log4j RollingFileAppender

我正在使用 log4j RollingFileAppender 根据文件大小滚动日志文件。我们设置的最大文件大小为“10 MB”。它在 tomcat 6 中运行良好,但是当我们迁移到 TomEE Plus 时..日志文件不会滚动..文件大小继续增长。

log4j 配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

 <!-- Not needed for Production -->
 <appender name="CA" class="org.apache.log4j.ConsoleAppender">
  <param name="Threshold" value="DEBUG" />
  <param name="encoding" value="UTF-8" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>

 <!-- Appender to log Gateway information messages -->
 <appender name="FA_GATEWAY_INFO" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/freshgate_info.log" />
  <param name="encoding" value="UTF-8" />
  <param name="MaxFileSize" value="10MB" />
  <param name="MaxBackupIndex" value="25" />
  <param name="Threshold" value="INFO" />
  <layout class="org.apache.log4j.PatternLayout">
   <!-- For production use this -->
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
   <!-- For Development use this pattern -->
   <!-- <param name="ConversionPattern" value="%m%n" /> <param name="ConversionPattern" 
    value="%-4r [%t] %-5p %c %x - %m%n" /> -->
  </layout>
  <filter class="org.apache.log4j.varia.LevelMatchFilter">
   <param name="LevelToMatch" value="DEBUG" />
   <param name="AcceptOnMatch" value="false" />
  </filter>
  <filter class="org.apache.log4j.varia.LevelMatchFilter">
   <param name="LevelToMatch" value="WARN" />
   <param name="AcceptOnMatch" value="false" />
  </filter>
  <filter class="org.apache.log4j.varia.LevelMatchFilter">
   <param name="LevelToMatch" value="ERROR" />
   <param name="AcceptOnMatch" value="false" />
  </filter>
  <filter class="org.apache.log4j.varia.LevelMatchFilter">
   <param name="LevelToMatch" value="FATAL" />
   <param name="AcceptOnMatch" value="false" />
  </filter>
 </appender>


 <!-- Appender to log Gateway information messages -->
 <appender name="FA_GATEWAY_DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/freshgate_debug.log" />
  <param name="encoding" value="UTF-8" />
  <param name="MaxFileSize" value="10MB" />
  <param name="MaxBackupIndex" value="25" />
  <param name="Threshold" value="DEBUG" />
  <layout class="org.apache.log4j.PatternLayout">
   <!-- For production use this -->
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
   <!-- For Development use this pattern -->
   <!-- <param name="ConversionPattern" value="%m%n" /> <param name="ConversionPattern" 
    value="%-4r [%t] %-5p %c %x - %m%n" /> -->
  </layout>
 </appender>


 <!-- Appender to log bC scale command messages -->
 <appender name="FA_BC_SCALE_COMMAND_DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/bc_scale_command_debug.log" />
  <param name="encoding" value="UTF-8" />
  <param name="MaxFileSize" value="5MB" />
  <param name="MaxBackupIndex" value="25" />
  <param name="Threshold" value="DEBUG" />
  <layout class="org.apache.log4j.PatternLayout">
   <!-- For production use this -->
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
   <!-- For Development use this pattern -->
   <!-- <param name="ConversionPattern" value="%m%n" /> <param name="ConversionPattern" 
    value="%-4r [%t] %-5p %c %x - %m%n" /> -->
  </layout>
 </appender>


 <!-- Appender to log Gateway error messages -->
 <appender name="FA_GATEWAY_ERROR" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/freshgate_error.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="ERROR" />
  <param name="MaxFileSize" value="1MB" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>

 <logger name="com.mt.gw">
  <level value="DEBUG" />
  <appender-ref ref="FA_GATEWAY_DEBUG" />
  <appender-ref ref="FA_GATEWAY_INFO" />
  <appender-ref ref="FA_GATEWAY_ERROR" />
 </logger>

 <logger name="BcScaleCommandLogger">
  <level value="DEBUG" />
  <appender-ref ref="FA_BC_SCALE_COMMAND_DEBUG" />
 </logger>

 <!-- Blocks the hibernate table creation logs -->
 <logger name="com.mt.gw.core.bl.persistence">
  <level value="INFO" />
 </logger>

 <!-- Blocks hibernate logs -->
 <logger name="org.hibernate">
  <level value="ERROR" />
 </logger>

 <!-- Blocks both Struts and Catalina logs -->
 <logger name="org.apache">
  <level value="ERROR" />
 </logger>

 <!-- Blocks c3po connection pooling log messages -->
 <logger name="com.mchange">
  <level value="ERROR" />
 </logger>

 <!-- Blocks Quartz Scheduler logs -->
 <logger name="org.quartz">
  <level value="ERROR" />
 </logger>

 <!-- Not needed for Production -->

 <root>
  <level value="DEBUG" />
  <appender-ref ref="CA" />
 </root>

 <!-- Appender to log bC TAF messages -->
 <appender name="FA_BC_TAF_DEBUG_LOGGER" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/bc_taf_debug.log" />
  <param name="encoding" value="UTF-8" />
  <param name="MaxFileSize" value="10MB" />
  <param name="MaxBackupIndex" value="25" />
  <param name="Threshold" value="DEBUG" />
  <layout class="org.apache.log4j.PatternLayout">
   <!-- For production use this -->
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
   <!-- For Development use this pattern -->
   <!-- <param name="ConversionPattern" value="%m%n" /> <param name="ConversionPattern" 
    value="%-4r [%t] %-5p %c %x - %m%n" /> -->
  </layout>
 </appender>

 <logger name="BcTafLogger">
  <level value="DEBUG" />
  <appender-ref ref="FA_BC_TAF_DEBUG_LOGGER" />
 </logger>
 
 <appender name="FA_TAF_LOGGER_DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/taf_debug.log" />
  <param name="encoding" value="UTF-8" />
  <param name="MaxFileSize" value="10MB" />
  <param name="MaxBackupIndex" value="25" />
  <param name="Threshold" value="DEBUG" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>
 
 <appender name="FA_TAF_LOGGER_ERROR" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/taf_error.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="ERROR" />
  <param name="MaxFileSize" value="1MB" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>

 <logger name="TafLogger">
  <level value="DEBUG" />
  <appender-ref ref="FA_TAF_LOGGER_DEBUG" />
  <appender-ref ref="FA_TAF_LOGGER_ERROR" />
 </logger>
 
 <appender name="FA_MANAGER_ERROR" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/manager_error.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="ERROR" />
  <param name="MaxFileSize" value="1MB" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>
 
 <!-- Appender to log Gateway manager messages -->
 <appender name="FA_GATEWAY_MANAGER" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/manager.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="INFO" />
  <param name="MaxFileSize" value="5MB" />
  <param name="MaxBackupIndex" value="10" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>
 
 <appender name="FA_GATEWAY_MANAGER_DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/manager_debug.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="DEBUG" />
  <param name="MaxFileSize" value="5MB" />
  <param name="MaxBackupIndex" value="10" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>
 
 <logger name="com.mt.manager">
  <level value="DEBUG" />
  <appender-ref ref="FA_GATEWAY_MANAGER_DEBUG" />
  <appender-ref ref="FA_GATEWAY_MANAGER" />
  <appender-ref ref="FA_MANAGER_ERROR" />
 </logger>
 
 <appender name="FA_ACTIVEMQ" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="${gateway.logs}/logs/activemq.log" />
  <param name="encoding" value="UTF-8" />
  <param name="Threshold" value="ERROR" />
  <param name="MaxFileSize" value="1MB" />
  <param name="MaxBackupIndex" value="5" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c] - %m%n"/>
  </layout>
 </appender>
 
 <logger name="org.apache.activemq">
  <level value="ERROR" />
  <appender-ref ref="FA_ACTIVEMQ" />
 </logger>
</log4j:configuration>

我通过将 log4j.xml 分成两个单独的配置解决了这个问题。解决了我的问题。