log4j2 按时间生成日志

我想在项目中的日志添加按照日期生成日志文件的规则,按照网上说的一些方法配置后,并不能
生效,请大神看看是什么原因。配置文件如下:

 <?xml version="1.0" encoding="UTF-8"?>
    <!--
        Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出。 
    -->
    <!--
        monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数。
    -->
    <configuration status="error" monitorInterval="30">
        <!--先定义所有的appender-->
        <appenders>
            <!--这个输出控制台的配置-->
            <Console name="Console" target="SYSTEM_OUT">
                <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
                <!--输出日志的格式-->
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            </Console>
        <!-- debug级别 打印到ehr_debug-->
            <RollingFile  name="debug_log" fileName="E:\\logs\ehr_debug.log" append="true" filePattern="E:\\logs\ehr_debug-%d{yyyy-MM-dd-HH-mm}_%i.log.gz">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  
                <Filters>  
                    <ThresholdFilter level="info"  onMatch="DENY"  onMismatch="NEUTRAL"/>  
                    <ThresholdFilter level="debug"  onMatch="ACCEPT"  onMismatch="NEUTRAL"/>  
                </Filters>   
                <Policies>  
                    <TimeBasedTriggeringPolicy interval="3"    modulate="true" />  
                     <DefaultRolloverStrategy max="10" />
                </Policies>  
            </RollingFile >  
        </appenders>
        <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
        <loggers>
            <!--建立一个默认的root的logger-->
            <root level="debug">
                <appender-ref ref="Console"/>
                <appender-ref ref="debug_log"/>
            </root> 
        </loggers>
    </configuration>


  <Appenders>  
            <RollingRandomAccessFile name="logfile" fileName="${LOG_HOME}/app.log"
                                     filePattern="${LOG_HOME}/app-%d{yyyy-MM-dd}.log">  
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />  
                <Policies>  
                    <TimeBasedTriggeringPolicy interval="1" modulate="true" />  
                </Policies>
                <DefaultRolloverStrategy max="20"/>
            </RollingRandomAccessFile>  
        </Appenders> 

日志按天数产生,及每天产生一个新的日志文件,其中关键的地方在于 filepattern属性和 的设置;

filepattern 中的日期格式精确位数决定了生成日志的日期单位, interval 决定该单位下的间隔数,如果在上面例子中 interval 设置为 5,那么就是5天生成一个日志;

如果按月生成日志,那么 filePath 修改为 "${LOG_HOME}/app-%d{yyyy-MM}.log";
按小时生成日志,filePath = "${LOG_HOME}/app-%d{yyyy-MM-dd-HH-mm}.log";

上面例子中的 用于设置符合同个filePath的日志文件的最大数量,超过这个数量时,新产生的日志文件会覆盖旧的日志文件,没有设置时,默认值为7;