SpringBoot集成slf4j日志和logback.xml配置
一、SpringBoot版本
SpringBoot使用2.7.6
<spring-boot.version>2.7.6</spring-boot.version>
二、依赖jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--使用注解配置-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
三、配置文件更改
application.yml 中新增日志配置
logging:
#日志配置路径
config: classpath:log.xml
#日志级别 指定目录级别
level:
root: INFO
四、新增log.xml配置文件
在resources目录下新增 log.xml 配置文件
内容为:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 应用名称 -->
<property name="APP_NAME" value="demo-test"/>
<!--定义日志文件的存储地址-->
<property name="LOG_HOME" value="/logs/${APP_NAME}"/>
<!-- %d 表示日期(也可以使用"%date")-->
<!-- %-5level 表示级别从左显示5个字符宽度-->
<!-- %thread 表示线程名称-->
<!-- %-30.30logger{30} 表示如果logger的名称小于30,就“-”指定左对齐;如果其名称长于30字符,就从左边较远输出的字符截掉,保持logger的名字长度最终限制为30个字符-->
<!-- %msg 表示日志消息-->
<!-- %n 表示换行符-->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] [%-30.30logger{30}] %msg%n"/>
<!-- 定义日志存储的路径,不要配置相对路径 -->
<!-- 开发环境
<property name="FILE_PATH" value="C:/Users/Demo/Desktop/demo/logs/demo.%d{yyyy-MM-dd}.%i.log" /> -->
<!-- 服务器环境 -->
<property name="FILE_PATH" value="/usr/local/demo-project/logs/demo.%d{yyyy-MM-dd}.%i.log" />
<!-- 控制台输出日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--文件输出的格式设置 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false -->
<prudent>false</prudent>
<!-- 日志日常打印日志文件,生成日志示例:/logs/demo-test/info.log -->
<file>${LOG_HOME}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 压缩日志的路径和日志格式,示例:info-2023-05-26_21.log.zip,%d{yyyy-MM-dd}:表示文件名称包含日期,%i:表示当前是第几个压缩文件 -->
<fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}_%i.log.zip</fileNamePattern>
<!-- 如果按天来回滚,则最大保存时间为7天,7天之前的都将被清理掉 -->
<maxHistory>7</maxHistory>
<!-- 日志总保存量为100MB,超过该日志总量的日志压缩包会被清除 -->
<totalSizeCap>100MB</totalSizeCap>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!--文件达到 最大10MB时会被压缩和切割 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 文件输出的日志 的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- project default level -->
<logger name="com.demo.demos.web.*" level="INFO" />
<!-- 日志输出级别 常用的日志级别按照从高到低依次为:ERROR、WARN、INFO、DEBUG。 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
五、运行demo
1、在启动类上加注解@Slf4j;
2、在main方法中打印一行日志
@Slf4j
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
log.info("info === spring 启动 ===");
}
}
3、运行demo打印日志
打印日志正常
2024-02-25 15:43:36.446 [INFO ] [main] [o.s.b.w.e.t.TomcatWebServer ] Tomcat started on port(s): 8080 (http) with context path ''
2024-02-25 15:43:36.453 [INFO ] [main] [com.demo.DemoApplication ] Started DemoApplication in 1.211 seconds (JVM running for 2.064)
2024-02-25 15:43:36.455 [INFO ] [main] [com.demo.DemoApplication ] info === spring 启动 ===
日志文件保存正常
六、新增Demo并运行
1、新增日志测试类
@Slf4j
public class Slf4jTest {
// private static final Logger logger = LoggerFactory.getLogger(Slf4jTest.class);
public static void main(String[] args) {
log.debug("@@@@@@@@@@@----------debug");
log.info("@@@@@@@@@@@----------info");
log.error("@@@@@@@@@@@----------error");
}
}
2、运行打印日志
打印日志正常
15:53:30.480 [main] DEBUG com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------debug
15:53:30.482 [main] INFO com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------info
15:53:30.482 [main] ERROR com.demo.demos.web.Slf4jTest - @@@@@@@@@@@----------error
七、参考资料:
感谢大佬指点!
SpringBoot集成slf4j日志和logback.xml配置详解
https://blog.csdn.net/qq_29864051/article/details/130881230