SLF4J记录日志&&日志文件的滚动策略__SpringBoot
Logback 是 Log4j 的作者的另一个开源日志组件,与 Log4j 相比,Logback 重新了内核,使它的性能提升了很多,大约是 Log4j 的 10 倍,同时占用更小的内存,并且完整的实现了 SLF4J API 是你可以很方便的切换日志框架。
SpringBoot 默认集成了 Logback,可以开箱即用,对于中小型项目,个人更倾向于推荐使用 Logback。
使用示例
public class MyClass {
private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
public void someMethod() {
logger.info("This is an info log");
logger.error("This is an error log");
}
}
在 src/main/resources 目录下创建一个名为 logback.xml 或 logback-spring.xml 的文件,并在其中定义滚动策略
<configuration>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--
${LOG_PATH:logs} 这样的配置使用了 Spring Boot 的属性占位符语法。
这个语法的含义是,如果存在名为 LOG_PATH 的环境变量,则使用该环境变量的值作为日志路径;
如果不存在 LOG_PATH 环境变量,则使用默认值 logs。
在 Spring Boot 中,如果没有显式地为属性指定值,那么会使用默认值。
在这个例子中,默认值为 logs,所以如果没有在其他地方显式地设置 LOG_PATH 环境变量,
日志文件将会被放置在项目根路径下的 logs 文件夹中。
-->
<!-- 日志文件名 -->
<file>${LOG_PATH:logs}/${LOG_FILE:application_name}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 触发滚动策略时重命名格式 -->
<fileNamePattern>${LOG_PATH:logs}/${LOG_FILE:myapplication}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 日志文件保留的最大数量 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<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" />
</root>
</configuration>