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 "日志打印成功";
    }
}
相关推荐
AI人工智能+电脑小能手7 分钟前
【大白话说Java面试题 第102题】【并发篇】第2题:volatile 能否保证线程安全?
java·安全·面试
KobeSacre13 分钟前
JUC 概述
java·开发语言
phltxy37 分钟前
MCP 从协议到 Spring AI 实战
人工智能·spring·oracle
小bo波39 分钟前
形式化方法 × UML
java·软件工程·uml·面向对象·形式化方法·tla+
就叫_这个吧1 小时前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web
程序员Jelena1 小时前
接口调用的代码实现:从入门到实战
java
代码钢琴师1 小时前
Throttle4j 快速上手教程
java
2601_961194021 小时前
考研资料电子版|去哪找|网盘
java·c语言·c++·python·考研·php
于先生吖1 小时前
前后端分离二手商城开发,质检登记、回收回款整套业务源码部署教程
java·开发语言·uni-app
小锋java12342 小时前
分享一套锋哥原创的基于LangChain4j的RAG医疗健康知识智能问答系统(SpringBoot4+Vue3+Ollama)
java·人工智能