log4j2.xml配置日志按等级输出,保留30天,计数器不能统计的问题

公司的基于springMVC的框架,想按照info级别、error级别生成不同的日志文件,以不压缩方式保存30天日志,用的log4j2.xml配置文件。我按照网上教程,按顺序对不同级别的日志进行过滤,但是我这里 filePattern中的-%i计数每次都是1,然后生成一个新文件也是1。为了测试方便,我把粒度调整为分钟,interval=1,然后max=30,为什么生成的文件不是-1-2-3,一直到-30,然后覆盖呢
<RollingFile name="DebugFile" fileName="${LOG_HOME}/debugFile/debugFile.log"
                                 filePattern="${LOG_HOME}/debugFile/debugFile-${LOG_NAME}-%d{yyyy-MM-dd-HH-mm}-%i.log" 
append="true">
            <Filters>
                <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>
            <DefaultRolloverStrategy max = "30"/>
        </RollingFile>


运行的结果是以下这样的

img

所以请求指点迷津,感激不尽。


<RollingFile name="DebugFile" fileName="${LOG_HOME}/debugFile/debugFile.log"
                                 filePattern="${LOG_HOME}/debugFile/debugFile-${LOG_NAME}-%d{yyyy-MM-dd-HH-mm}-%i.log" 
append="true">
            <Filters>
                <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
               <SizeBasedTriggeringPolicy size="2M" />
            </Policies>
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>
            <DefaultRolloverStrategy max = "30"/>
        </RollingFile>


只按时间滚动,%i没有意义,每分钟只会生成一个日志文件。加上日志大小的限制,%i才有意义。

你现有的是以分钟为单元,你需要配置一下文件追加信息,而不是每一次日志生成一个新文件。如果一天为单位,应该不用处理。我们的日志是通过properties文件配置的,

#debug 
log4j.appender.NormalLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.NormalLog.File=logs\\debug.log
log4j.appender.NormalLog.Threshold=debug
log4j.appender.NormalLog.DatePattern='.'yyyyMMdd
log4j.appender.NormalLog.layout=org.apache.log4j.PatternLayout
log4j.appender.NormalLog.layout.ConversionPattern=%X{workId} -  %d{yyyy-MM-dd HH:mm:ss} %5p %F:%L %m%n

#error
log4j.appender.ErrorLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorLog.File=logs\\error.log
log4j.appender.ErrorLog.Threshold=error
log4j.appender.ErrorLog.DatePattern='.'yyyyMMdd
log4j.appender.ErrorLog.layout=org.apache.log4j.PatternLayout
log4j.appender.ErrorLog.layout.ConversionPattern=%X{workId} - %d{yyyy-MM-dd HH:mm:ss} %5p %F:%L %m%n