SpringBoot日志

自定义日志

导入的是slf4j的Logger类

java 复制代码
package app.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class TestController {
    // 得到日志对象
    private static Logger logger = LoggerFactory.getLogger(TestController.class);

    @GetMapping("/log")
    public void getLog() {
        logger.info("Customer log");
    }
}

运行效果

设置日志级别

日志级别(低->高):trace->debug->info->warn->error

Spring中默认级别: info

root: warn解释:如果SpringBoot中没有为特定的包设置日志级别那么就会使用warn作为默认的日志级别

当设置为warn之后,控制台只会输出大于等于warn级别的日志信息

日志持久化

日志不会覆盖而是追加的方式添加,日志文件太大的时候会自动分割

yaml 复制代码
# 设置路径
logging:
  file:
    path: D:\100.Documents\200.IntelliJIDEA\projects\spring_study\springboot-demo1\src\main\resources\static
yaml 复制代码
# 设置名称
logging:
  file:
    name: springboot.log

结合lombok使用@Slf4j快速添加日志

这些日志会发现每次在使用的时候需要填写对应的类信息才行

java 复制代码
private static Logger logger = LoggerFactory.getLogger(LogController.class);

lombok可以省略掉这一步,哪一个类运行就获取哪一个类的字节码

对比 getLog2 可以更简洁的输出日志

java 复制代码
package app.controller;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class LogController {
    //1.得到日志对象
    private static Logger logger = LoggerFactory.getLogger(LogController.class);

    @GetMapping("/log1")
    public void getLog1() {
        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }

    @GetMapping("/log2")
    public void getLog2() {
        log.trace("trace");
        log.debug("debug");
        log.info("info");
        log.warn("warn");
        log.error("error");
    }
}

查看字节码文件会发现@Slf4j的运行原理

说明程序是在编译期自动添加的这一行代码,包括lombok的@Data注解也会自动生成getter、setter、equals、canEqual、hashCode、toString方法都是在编译期生成的代码

相关推荐
小云小白14 小时前
企业抗量子落地指南(一)全链路抗量子 TLS1.3 落地指南(浏览器 → Nginx → SpringBoot)
spring boot·nginx·抗量子通信
心之伊始14 小时前
Spring AI MCP Client 实战:让 Java 后端通过 stdio 调用本地工具服务
java·spring boot·agent·spring ai·mcp
元宝骑士14 小时前
SpringBoot + Sa-Token 实现浏览器级 CSRF 防御(基础篇)
spring boot·安全
qq_25183645714 小时前
2026计算机毕设选题|3000套高质量SpringBoot实战项目(含完整源码)(每人一套不收米)
java·spring boot·课程设计
勤匠15 小时前
告别 if 地狱:Spring Boot 3 + QueryDSL 优雅实现动态分页查询
spring boot
小小放舟、16 小时前
@JsonCreator 注解详解——从枚举反序列化说起
spring boot·spring·spring cloud·java-ee·maven·intellij-idea·状态模式
李昊哲小课16 小时前
Spring Boot 4.0.6 全栈教程案例
spring boot·后端
亦暖筑序17 小时前
Java 8老系统旁路接入AI Gateway:不升级JDK也能用AI
java·spring boot·aigc·企业架构·ai gateway
智碳未来科技有限公司18 小时前
工业双碳实践:基于 SpringBoot + 若依的智碳能源管理系统(zhitan-ems)源码深度解析与落地实战
spring boot·后端·能源
biubiubiu070618 小时前
SpringBoot生产级日志配置
java·spring boot·后端