Spring Boot ⽇志

目录

1.⽇志使⽤

2.⽇志级别

3.⽇志配置

3.1配置⽇志级别

3.2⽇志持久化

3.3配置⽇志⽂件分割

4.更简单的⽇志输出


1.⽇志使⽤

在使用之前我们先来了解一下为什么要使用?
⽇志的⽤途

1.系统监控
我们可以通过⽇志记录这个系统的运⾏状态,对数据进⾏分析, 设置不同的规则, 超过阈值时进⾏报警。
2.数据采集
数据采集是⼀个⽐较⼤的范围, 采集的数据可以作⽤在很多⽅⾯, ⽐如数据统计, 推荐排序等。
3.⽇志审计
通过系统⽇志分析,可以判断⼀些⾮法攻击, ⾮法调⽤,以及系统处理过程中的安全隐患

⽇志使⽤
SpringBoot 内置了⽇志框架 Slf4j , 我们可以直接在程序中调⽤ Slf4j 来输出⽇志

1.在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory

2.⽇志对象的打印⽅法有很多种,我们可以先使⽤ info() ⽅法来输出⽇志

代码1-1:

复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Logger")
@RestController
public class LoggerController {
    private  static Logger logger= LoggerFactory.getLogger(LoggerController.class);
    @RequestMapping("/print")
    public void print(){
        logger.info("=======打印日志======");
    }
}

结果:

注意:Logger 对象是属于 org.slf4j 包下的, 不要导⼊错包.

从上图可以看到,⽇志输出内容元素具体如下:

1.时间⽇期:精确到毫秒

2.⽇志级别

3.进程ID

4.线程名

5.Logger名(通常使⽤源代码的类名)

6.⽇志内容


2.⽇志级别

⽇志级别代表着⽇志信息对应问题的严重性, 为了更快的筛选符合⽬标的⽇志信息。

⽇志的级别从⾼到低依次为: FATAL、ERROR、WARN、INFO、DEBUG、TRACE

1.FATAL: 致命信息,表⽰需要⽴即被处理的系统级错误

2.ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运⾏

  1. WARN: 警告信息, 不影响使⽤, 但需要注意的问题

4.INFO: 普通信息, ⽤于记录应⽤程序正常运⾏时的⼀些信息,

5.DEBUG: 调试信息, 需要调试时候的关键信息打印.

6.TRACE: 追踪信息

注意:⽇志级别通常和测试⼈员的Bug级别没有关系

⽇志级别的使⽤

⽇志级别是开发⼈员⾃⼰设置的. 开发⼈员根据⾃⼰的理解来判断该信息的重要程度

代码2-1:

复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/Logger")
@RestController
public class LoggerController {
    private  static Logger logger= LoggerFactory.getLogger(LoggerController.class);

    @RequestMapping("/level")
    public void loggerLevel(){
        logger.error("=======error======");
        logger.warn("======warn======");
        logger.info("======info======");
        logger.debug("======debug======");
        logger.trace("======trace======");
    }
}

结果:


结果发现, 只打印了info, warn和error级别的⽇志
这与⽇志级别的配置有关, ⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就 是info, warn和error.


3.⽇志配置

3.1配置⽇志级别

yml配置

复制代码
logging:
 level:
  root: debug    

整个程序(root)⽇志的输出级别设置为debug级别

(也可以修改root,为具体路径)

重新运⾏上述代码2-1, 观察结果

3.2⽇志持久化

以上的⽇志都是输出在控制台上的, 然⽽在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追 溯问题. 把⽇志保存下来就叫持久化. ⽇志持久化有两种⽅式:

  1. 配置⽇志⽂件名

  2. 配置⽇志的存储⽬录

  1. 配置⽇志⽂件名

    logging:
    file:
    name: logger/springboot.log

运行后:

2.配置⽇志⽂件的保存路径
这种⽅式只能设置⽇志的路径, ⽂件名为固定的spring.log

复制代码
logging:
 file:
  path: D:/temp

运行后:

注意:

logging.file.name 和 logging.file.path 两个都配置的情况下, 只⽣效其⼀, 以 logging.file.name 为准

3.3配置⽇志⽂件分割

如果我们的⽇志都放在⼀个⽂件中, 随着项⽬的运⾏, ⽇志⽂件会越来越⼤, 需要对⽇志⽂件进⾏分割

⽇志框架也帮我们考虑到了这⼀点, 所以如果不进⾏配置, 就⾛⾃动配置
默认⽇志⽂件超过10M就进⾏分割

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

1.⽇志⽂件超过1KB就分割
2.分割后的⽇志⽂件名为: ⽇志名.⽇期.索引

样图:


4.更简单的⽇志输出

lombok提供的 @Slf4j 会帮我们提供⼀个⽇志对象 log, 我们直接使⽤就可以

复制代码
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequestMapping("/Logger2")
@RestController
public class LoggerApplication2 {

    @RequestMapping("/print2")
    public void log2(){
        log.info("--------------要输出⽇志的内容----------------");
    }
}

以上为我个人的小分享,如有问题,欢迎讨论!!!

都看到这了,不如关注一下,给个免费的赞

相关推荐
一只叫煤球的猫21 分钟前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9651 小时前
tcp/ip 中的多路复用
后端
bobz9651 小时前
tls ingress 简单记录
后端
皮皮林5512 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友2 小时前
什么是OpenSSL
后端·安全·程序员
bobz9652 小时前
mcp 直接操作浏览器
后端
前端小张同学5 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook5 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康6 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在6 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net