说明
TimeBasedRollingPolicy 策略会将过时的日志,改名 或者 另存到指定的目录
本案例操作如下:
当天的日志输出到
log/logFile.log文件中假如当天是:
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();
}
}
测试
执行后 在工程下生成目录 和 文件,如下:
修改日期再测试
将日期改成第二天,再次执行,原 日志文件的名字改变了,如下:

