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 "日志打印成功";
    }
}
相关推荐
学习使得吾快乐28 分钟前
时序数据库 TDengine 在设备监测中的实际落地:从传感器上报到实时看板
java·时序数据库·tdenginne
Ethan010730 分钟前
spring事务隔离级别,如果数据库设置为RC,spring可以改为RR吗
spring
程序员清风38 分钟前
推荐几个我常听的AI播客!
java·后端·面试
Ethan010743 分钟前
详解Spring 事务三大核心接口,以及我们能用它来做什么
spring
唐青枫1 小时前
Java Gradle 实战指南:从 Wrapper、Kotlin DSL 到 Spring Boot 多模块构建
java·kotlin·gradle
wuqingshun3141591 小时前
如何理解Spring Boot中的starter?
java·spring boot·后端
带刺的坐椅1 小时前
Solon TeamAgent 协作协议:从 SEQUENTIAL 流水线到 HIERARCHICAL 主管团队
java·ai·llm·agent·solon
wuqingshun3141591 小时前
SpringBoot是如何实现自动配置的
java·spring boot·后端
用户053704031431 小时前
我的学习记录泛型
java
zhouhui0011 小时前
AI帮我写了个Spring Boot校验,线上漏掉了这组边界条件
java·spring boot·redis·ai编程