首页 > 解决方案 > 根据 log4j2 中的每小时在新目录中生成日志?

问题描述

我想创建一个目录 {date}.dir,在这个目录中,我需要在一个新的单独文件中记录每小时的日志,如 0000.log、0100.log ...2300.log。

我使用了滚动文件附加程序,但它只能创建一个日志文件并压缩最后一个。我正在使用间隔 = 1 的基于时间的触发策略,它每天都会给我一个新文件并压缩最后一天的文件。

<RollingFile name="eventLogger" fileName="/Log/webservices/linpub.log" filePattern="/Log/webservices/linpub-%d{MM-dd-yyyy}.log.gz">
        <PatternLayout>
                <Pattern>%d{MM/dd/yy HH:mm:ss.SSS} %-5p [%t] %c{1} %X{trioOperation} - %m %throwable %n</Pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        </Policies>
</RollingFile>

我想创建一个名为 linpub-{date}.dir 的新文件,在文件内部,每小时应该有一个日志文件。

我正在使用 log4j2 2.3 版本。

标签: javalog4jlog4j2

解决方案


请使用以下配置:

 <appender name="dailyFileAppender" 
      class="org.apache.log4j.rolling.RollingFileAppender">
      <param name="append" value="true" />
      <param name="Threshold" value="INFO" />
      <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="/temp/logs/Project-Name_%d{yyyy-MM- 
      dd-HH}.log" />
      </rollingPolicy>
      <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p 
      %-10t [%-40.40c] %x - %m%n" />
      </layout>
  </appender>

推荐阅读