Spring日志

概述

日志的功能

系统监控

数据采集

日志审计

sout和Springboot比较

之前一直都是通过sout来打印日志,但是SpringBoot项目启动默认就会打印日志,那么我们自己打印的日志和SpringBoot打印的日志有什么不同呢?

java 复制代码
@RestController
@RequestMapping("/logger")
public class LoggerController {
    @RequestMapping("/print")
    public String print(){
        System.out.println("打印日志");
        return "日志打印成功";
    }
}

我们通过sout打印的日志就比SpringBoot打印的日志就少了很多的信息,所以SpringBoot内置了日志框架Slf4j,我们在程序直接调用Slf4j来输出日志

日志使用

打印日志

打印日志的步骤:

1.在程序中的到日志对象

2.使用日志对象写出想要打印的内容

java 复制代码
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);
    @RequestMapping("/print")
    public String print(){
        logger.info("SpringBoot打印的日志");
        System.out.println("打印日志");
        return "日志打印成功";

日志框架

Slf4j框架不是日志的真正实现

门面模式(外观模式)

门面模式:提供了一个向外的统一接口,用来访问子系统的接口,让子系统更加方便去使用

引入Sjl4f框架即日志门面,应用程序和日志框架就有了统一的API接口

日志格式

日志级别

日志配置

配置日志级别

fatal(致命信息,既然已经严重程度是非常大的,就已经不需要我们去观察)

error

warn

info

debug

trace

配置整体的日志级别

java 复制代码
logging:
  level:
    root: info

配置具体某个包或者类的日志级别

java 复制代码
logging:
  level:
    root: trace
    com.Kon.demo.controller: trace

日志持久化

绝对路径和相对路径都是可以的

java 复制代码
  file:
    path: logger/
    name: logger2/springboot.log

注:1.name不仅可以指出路径还可以对文件进行命名

2.如果两个存在,以file.name为准

配置日志文件分割

日志太多不好查看就需要进行分割

java 复制代码
  logback:
    rollingpolicy:
      max-file-size: 1MB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

配置日志格式

java 复制代码
  pattern:
    console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
    file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'

更简单的日志输出

每次进行日志输出就要使用

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

很繁琐,我们现在只需要使用一个注释就可以解决

java 复制代码
@Slf4j
@RestController
@RequestMapping("/logger")
public class LoggerController {
    @RequestMapping("/print")
    public String print(){
        log.error("打印 error 的日志");
        log.warn("打印 warn 的日志");
        log.info("打印 info 的日志");
        log.debug("打印 debug 的日志");
        log.trace("打印 trace 的日志");
        System.out.println("打印日志");
        return "日志打印成功";
    }
}
相关推荐
Flittly11 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(二):执行隔离沙箱实战
java·spring boot·spring
程序员黑豆11 小时前
Java变量详解:从入门到精通
java·前端·ai编程
karry_k11 小时前
Skill 到底是什么?从提示词、脚本到多智能体工作流的完整指南
java·人工智能·后端
qq_4017004111 小时前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
沐言人生12 小时前
HelloAgentR工程手记1/100天——项目工作流搭建
spring boot·agent·vibecoding
周杰伦fans12 小时前
数列极限的定义
java·开发语言
小白的后端世界12 小时前
LangChain 模型初始化参数详解:从基础配置到企业级实践
java·人工智能·langchain
广州浮点FLOATLIC12 小时前
Mentor Graphics浮动许可证管理为什么一到流片节点就失控
java·大数据·数据库·许可证管理·cad 许可证优化
Loongproxy12 小时前
大规模采集为啥用隧道代理IP?会话保持如何做到无感轮换
java·服务器·网络
杰克尼13 小时前
天机学堂面试题
java