【问题标题】:log4j2: Roll over file is not compressing and active file does not get clearedlog4j2:翻转文件未压缩,活动文件未清除
【发布时间】:2014-11-06 13:16:37
【问题描述】:

我们最近将 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>

【问题讨论】:

    标签: logging log4j2 apache-commons-logging


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

          </Console>
          &appenders;
        </appenders>
      

      记录器类似:

          </root>
          &loggers;
        </loggers>
      

      【讨论】:

      • 对上述问题的一些更新:当我们有独立设置时,我们不会遇到这个问题。当我们进行集群设置时会出现此问题。在集群设置中,管理服务器和其中一个节点是相同的。在这种情况下,我们会遇到日志文件翻转问题。但是,另一个节点工作正常。原木滚动和拉动。当前文件也被清空。我真的很难找到问题的根本原因。我尝试了建议的两种方法,但都没有帮助!
      • 这是否意味着您有两个进程写入同一个文件?
      • 不,管理服务器仅用于负载平衡。它没有任何进程写入日志文件。
      • 我观察到的另一件事是,在复制文件时,它总是将新文件重命名为:2014-09-15 11:13:13,782 DEBUG RollingFileManager 执行同步 FileRenameAction[D:\version1\ cluster1\ap1\config\logs\appserver.log 到 D:\version1\cluster1\app1\config\logs\appserver\appserver-09-15-2014-1.log,renameEmptyFiles=false]。它始终为 1。数字不会增加。当前文件被复制并以日期和-1.log为后缀
      • 仅当基于大小的触发器在基于日期的触发器之前启动时,后缀才会增加。因此,如果您每天翻转,并且您有 10MB 的大小触发器,那么您应该会获得许多 10MB 的文件,并且每天都会增加索引。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2011-09-18
      相关资源
      最近更新 更多