Logback日志框架使用&&日志文件的滚动策略__SpringBoot
Logback 是 Log4j 的作者的另一个开源日志组件,与 Log4j 相比,Logback 重新了内核,使它的性能提升了很多,大约是 Log4j 的 10 倍,同时占用更小的内存,并且完整的实现了 SLF4J API 是你可以很方便的切换日志框架。
SpringBoot 默认集成了 Logback,可以开箱即用,对于中小型项目,个人更倾向于推荐使用 Logback。
使用演示
pom.xml 无需引入额外依赖
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定义日志文件的输出路径和名称 -->
<property name="LOG_PATH" value="logs" />
<property name="LOG_FILE" value="for_log.log" />
<!-- 定义滚动策略 -->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory> <!-- 保留7天的历史日志文件数量 -->
<totalSizeCap>1GB</totalSizeCap> <!-- 总日志文件大小限制 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<!-- 将日志输出到文件 -->
<appender-ref ref="fileAppender" />
<!-- 将日志输出到控制台 -->
<appender-ref ref="consoleAppender" />
</root>
</configuration>
consoleAppender
标签是用以恢复控制台日志输出的(俺也不清楚为啥配置滚动策略后,控制台默认的日志输出没有了,需要手动配置恢复|||^_^ )
需要注意的是:这样配置时(文件日志+控制台日志),日志输出需要占据服务器更多的资源开销,需要节省资源开销时,可以注释关于控制台输出的配置,关闭控制台日志输出。
private static ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
public Object log() {
String str = "Log King " + dateFormatThreadLocal.get().format(System.currentTimeMillis());
log.info("I'm coming~ ----> \n{}", str);
return null;
}
写个接口来输出日志,使用API调用工具触发
可以观察到在项目的根路径下,新建了一个logs目录,并生成了指定名的日志文件,并且在调用过程中,控制台输出的日志和日志文件的内容是一致的,over!