woxiangni21 2017-01-09 07:17 采纳率: 0%
浏览 2276

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>

  • 写回答

1条回答 默认 最新

  • 蹦迪的程序员 2021-09-06 12:00
    关注
    
      <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;

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大