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人工智能+电脑小能手2 小时前
【大白话说Java面试题 第62题】【JVM篇】第22题:怎么查看服务器默认的垃圾回收器是哪一个?
java·服务器·jvm·面试
yqzyy3 小时前
C#如何优雅处理引用类型的深拷贝(十一)
java·网络·nginx
范什么特西3 小时前
idea里面jsp找不到图片
java·开发语言·servlet
23.3 小时前
【分析】网关故障排查指南:如何区分并定位‘上游’与‘下游’问题
java
liguojun20253 小时前
软硬一体智慧场馆系统推荐——助力场馆数字化高效升级
java·大数据·人工智能·物联网·1024程序员节
晨曦中的暮雨3 小时前
4.17小厂HR面
java
青云计划3 小时前
渐进式发布
java·后端
小则又沐风a3 小时前
深入理解进程概念 第三章 进程调度切换
java·linux·服务器·前端
努力攀登的小k3 小时前
《Java基础,Java多态入门到进阶:重写、重载、转型的逻辑与实战避坑》
java·开发语言