Logback Appender-TimeBasedRollingPolicy 输出文件,将过时日志改名

说明

TimeBasedRollingPolicy 策略会将过时的日志,改名 或者 另存到指定的目录

本案例操作如下:

  1. 当天的日志输出到 log/logFile.log 文件中

  2. 假如当天是:2022-01-01,当天结束时,将文件改名为 log/logFile.2022-01-01.log

注意: 本案例只 将日志 输出到文件中,不打印到控制台中

修改 logback.xml

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!-- 通过property标签,来存放key-value数据,便于后面的动态获取,提高程序的灵活性 -->
    <property name="log-dir" value="log" />
    <property name="log-name" value="logFile" />

    <!--
        name:自定义,
        class:加载指定类(ch.qos.logback.core.rolling.RollingFileAppender类会将日志输出到指定的文件中),
    -->
    <appender name="fileAppender"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 把日志文件输出到:项目目录下的log文件夹(无则自动创建)下 -->
        <file>${log-dir}/${log-name}.log</file>

        <!-- rollingPolicy:滚动策略>>>每天结束时,都会将该天的日志存为指定的格式的文件 -->
        <!-- TimeBasedRollingPolicy 策略会将过时的日志,另存到指定的目录、文件中(无该文件则创建) -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- FileNamePattern:文件的全路径名模板 -->
            <fileNamePattern>${log-dir}/${log-name}.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <!-- 日志输出格式 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L- %msg%n</pattern>
            <!-- 日志编码,windows默认为GBK编码,所以要设置 -->
            <charset class="java.nio.charset.Charset">UTF-8</charset>
        </encoder>
    </appender>

    <!--
        root:logger的根节点,appender-ref:确定使用哪个appender
        level:对整体设置级别
        注:如果不指定配置此项的话,logback不生效
    -->
    <root level="info">
        <appender-ref ref="fileAppender" />
    </root>
</configuration>

测试类

public class Main {
    static final Logger log= LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        String content="hello world!";
        log.trace("trace级别:: {}",content);
        log.debug("debug级别:: {}",content);
        log.info("info级别:: {}",content);
        log.warn("warn级别:: {}",content);
        log.error("error级别:: {}",content);

//        Mapper.test();
    }
}

测试

执行后 在工程下生成目录 和 文件,如下:

修改日期再测试

将日期改成第二天,再次执行,原 日志文件的名字改变了,如下:


原文出处:/show_1IX30jopYU04.html