JAVA-springboot log日志

SpringBoot从入门到精通-第8章 日志的操作

一、Spring Boot默认的日志框架

SpringBoot支持很多种日志框架,通常情况下,这些日志框架都是由一个日志抽象层和一个日志实现层搭建而成的,日志抽象层是为记录日志提供的一套标准且规范的框架,其作用是为记录日志提供接口,日志实现层是由日志抽象层实现的框架。

在SpringBoot中,常见的日志抽象层由jcl、slf4j、jboos-logging等。常见的日志实现层由log4j、jul、log4j2、logback等。SpringBoot默认使用的抽象层是slf4j,默认使用的日志实现层是logback。

二、打印日志

在使用slf4j打印日志时,需要创建日志对象,创建日志对象的语法如下:

java 复制代码
Logger log = LoggerFactory.getLogger(所在类.class);

例如:在TestController类例创建日志对象,那么getLogger()方法的参数就要写成TestController.class,实例代码如下

java 复制代码
package com.example._20250605springboot_log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//import java.util.logging.Logger;

@RestController
public class TestController {
//private static final Logger log = LoggerFactory.getLogger(getClass());
Logger log = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/index")
    public String index(String val1,String val2){
    log.info("This is index");
//    log.info("val1={},val2={}",val1,val2);
    log.info("val1="+val1+"----val2="+val2);
    return "";
}
}

运行程序,访问http://localhost:8080/index,控制台输出

java 复制代码
2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index
2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : val1=null----val2=null
2025-06-07T09:10:55.458+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : This is index
2025-06-07T09:10:55.459+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : val1=null----val2=null

三、解读日志

java 复制代码
2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index

解读:

2025-06-07T08:52:49.578+08:00 : 打印日志具体的时间到毫秒级

INFO :打印日志的级别

3140 :当前项目的进程编号(PID)

"---" : 分隔符,五实际意义

20250605springboot_log\] \[nio-8080-exec-3\] :打印日志的线程名称 c.e._.TestController : 日志是由项目的哪个类打印的,这里由于包名有点长,省略写法 This is index : 输出的信息 ### 四、保存日志 **4.1保存日志文件的生成位置** 在application.properties配置文件中配置: ```java logging.file.path=. ``` 点表示项目位置的当前目录下,且日志名为spring。可以自定义日志文件位置 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c9050584a3704c91a6ca81c6e7f51ea3.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c5202b6fd46d4d30b8a4afafc4a9b9c6.png) **4.2指定日志文件的生成名称** 在application.properties配置文件中配置: ```java logging.file.name=${logging.file.path}\\test.log ``` **4.3为日志文件添加约束** **指定日志文件的最大保存天数** 在application.properties配置文件中配置: ```java logging.logback.rollingpolicy.max-history=2 ``` **指定日志文件的最大容量** 在application.properties配置文件中配置: ```java logging.logback.rollingpolicy.max-file-size=2KB ``` **指定归档文件的名称格式** 默认 ```java ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz ``` **启动项目自动压缩日志文件** 在application.properties配置文件中配置: ```java logging.logback.rollingpolicy.clean-history-on-start=true ``` **启动项目后遍历打印很多内容验证日志文件压缩和大小** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/228b02316a2e465c92c15557186caa30.png) ### 五、调整日志 **5.1设置日志级别** * ERROR * WARN * INFO * DEBUG * TRACE ERROR \> WARN \> INFO \> DEBUG \> TRACE 在application.properties配置文件中配置: ```java logging.level.com.example._20250605springboot_log.TestController=debug ``` **5.2设置日志格式** * %date{yyyy-MM-dd HH:mm:ss.SSS} 时间 * %5level 日志级别 * ${PID} 进程号 * %15.15t %t表示线程名 15.15表示最短或最长为15个字符 * %-40.40logger{39} * %m 具体的内容 * %n 换行符 **设置日志文件格式** 在application.properties配置文件中配置: ```java logging.pattern.file= ``` **设置控制台打印格式** 在application.properties配置文件中配置: ```java logging.pattern.console= ``` ### 六、logback.xml配置 logback.xml配置文件和application.properties配置文件都被存储在resource目录下,logback.xml的优先级高于application.properties。都存在,会采用logback.xml的配置。 ### 七、遇到的问题 1、import导入logger类的时候要注意导入的是下面的路径 ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; ``` 刚开始创建类直接引用Logger log 时候springboot会自动导入logger路径的类,但是程序提示错误"不兼容的类型",自动导入的路径为: ```java import java.util.logging.Logger; ``` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/5ad2f291e9e34f43a7dfddb1f7ac0fb7.png) 然后修改了上面的导入路径为: ```java import org.slf4j.Logger; ``` 就可以正常使用了。

相关推荐
桦说编程3 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen3 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研3 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员4 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
一只爱撸猫的程序猿4 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国4 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~4 小时前
《设计模式》装饰模式
java·设计模式
A尘埃5 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交5 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图