log4j2:翻转文件未压缩,活动文件未被清除

时间:2014-09-12 11:09:36

标签: logging log4j2 apache-commons-logging

我们最近将log4j2-beta9迁移到log4j2-2.0版本。 我们正面临着翻转文件的问题。

第一期: 翻转文件不会压缩,只保留.log文件。

第二个问题: 活动文件未被清除。日志会不断添加到同一文件中,从而增加文件大小。

请找到我的log4j2.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j2config [
<!ENTITY appenders SYSTEM "#USER_INSTALL_DIR#/wwf/config/properties/log4j2-appenders.xml">
<!ENTITY loggers SYSTEM "#USER_INSTALL_DIR#/wwf/config/properties/log4j2-loggers.xml">
]>
<configuration monitorInterval="30" status="debug">
  <properties>
    <property name="log4j2.logDir">.</property>
    <property name="logDir">${sys:log4j2.logDir}</property>
    <property name="log4j2.filePrefix">default</property>
    <property name="filePrefix">${sys:log4j2.filePrefix}</property>
  </properties>
  <appenders>
    <RollingFile name="Default" fileName="${logDir}/${filePrefix}.log"
                 filePattern="${logDir}/${filePrefix}/${filePrefix}-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] %c %m [%M:%L %X] %n"/>
      <Policies>
        <SizeBasedTriggeringPolicy size="1 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="200"/>
    </RollingFile>
    <Console name="Console" target="SYSTEM_ERR">
        <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] %c %m [%M:%L %X] %n"/>
    </Console>
    &appenders;
  </appenders>
  <loggers>
    <logger name="SYSTEM_OUT" level="info" additivity="false">
        <appender-ref ref="Default" />
        <appender-ref ref="Console" />
    </logger>
    <logger name="SYSTEM_ERR" level="error" additivity="false">
        <appender-ref ref="Default" />
        <appender-ref ref="Console" />
    </logger>
    <logger name="com.abc" level="debug" additivity="false">
      <appender-ref ref="Default"/>
    </logger>
    <logger name="com.xyz" level="debug" additivity="false">
      <appender-ref ref="Default"/>
    </logger>
    <logger name="com.abcdef" level="debug" additivity="false">
      <appender-ref ref="Default"/>
    </logger>
    <logger name="com.abcdef.commons" level="debug" additivity="false">
        <appender-ref ref="Default"/>
    </logger>
    <logger name="org.springframework" level="warn" additivity="false">
      <appender-ref ref="Default"/>
    </logger>
    <root level="error">
      <appender-ref ref="Console"/>
    </root>
    &loggers;
  </loggers>

</configuration>

2 个答案:

答案 0 :(得分:1)

出现此问题是因为群集设置中的节点1也表现为管理服务器。但是管理服务器和节点1的JVM是不同的。这两个JVM都使用相同的文件appserver.log进行日志记录。但是,管理服务器不会向日志文件添加任何内容。尽管如此,它仍然锁定了appserver.log。因此,appserver.log没有被清除。

因此,在您的设置中,检查appserver.log是否因某种原因被锁定。

在我们的案例中,我们通过为管理服务器创建虚拟appserver.log来解决此问题。这样我们的日志文件就不会被锁定。

答案 1 :(得分:0)

您是否尝试将<TimeBasedTriggeringPolicy />添加到<RollingFile>...<Policies>部分?您目前只有基于大小的触发策略,但您的filePattern有一个日期。

此外,您的配置有一个奇怪的字符串&appenders; - 您应该删除它。

    </Console>
    &appenders;
  </appenders>

类似记录器:

    </root>
    &loggers;
  </loggers>