当前位置: 首页 > news >正文

【后端开发】Spring日志

文章目录

  • Spring日志
    • 日志作用
    • 日志测试
    • 日志信息
    • 日志级别
    • 日志配置
      • 配置日志级别
      • 日志持久化
      • 日志文件分割
    • 注解的使用

Spring日志

日志作用

  1. 系统监控:可以通过日志记录这个系统的运行状态,对数据进行分析,设置不同的规则,超过阈值时进行报警。
  2. 数据采集:数据采集是一个比较大的范围,采集的数据可以作用在很多方面,比如数据统计,推荐排序等。
  3. 日志审计:通过系统日志分析,可以判断一些非法攻击,非法调用,以及系统处理过程中的安全隐患。

日志测试

SpringBoot 内置了日志框架 Slf4j,可以直接在程序中调用 Slf4j 来输出日志。

@RequestMapping("/logger")
@RestController
public class LoggerController {private static Logger logger = LoggerFactory.getLogger(LoggerController.class);@RequestMapping("/print")public String print() {logger.info("使用日志对象打印日志");System.out.println("使用sout打印日志");return "success";}
}

日志信息

在这里插入图片描述

日志级别

日志级别代表着日志信息对应问题的严重性,目的是为了更快的筛选符合目标的日志信息。
日志的级别从高到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE

1.FATAL:致命信息,表示需要立即被处理的系统级错误
2.ERROR:错误信息,级别较高的错误日志信息,但仍然不影响系统的继续运行
3.WARN:警告信息,不影响使用,但需要注意的问题(以上的错误如果长期不处理,会引起故障)
4.INFO:普通信息,用于记录应用程序正常运行时的一些信息
5.DEBUG:调试信息,需要调试时候的关键信息打印
6.TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则请使用DEBUG级别替代)

注意:日志级别通常和测试人员的Bug级别没有关系,日志级别是开发人员自己设置的,开发人员根据自己的理解来判断该信息的重要程度。

    @RequestMapping("/level")public String levelPrint() {logger.trace("=======trace级别日志=======");logger.debug("=======debug级别日志=======");logger.info("=======info级别日志=======");logger.warn("=======warn级别日志=======");logger.error("=======error级别日志=======");return "success";}

此时控制台只打印info,warn和error级别的日志,不会打印出debug,trace级别的日志,这与日志级别的配置有关,日志的输出级别默认是 info 级别,所以只会打印大于等于此级别的日志,也就是info,warn和error。

日志配置

配置日志级别

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

logging:level:root: debug

这样控制台打印出来的日志信息就包括debug级别以及debug以上级别的信息,包括info,warn,error。

日志持久化

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

  1. 配置日志文件名
logging:file:name: logger/captcha.log

日志信息将存储到文件主目录下的logger的captcha.log文件中。

  1. 配置日志的存储目录
    这种方式只能设置日志的路径,文件名为固定的spring.log。
logging:file:name: logger

logging.file.name 和 logging.file.path 都配置的情况下,仅 logging.file.name 有用。

日志文件分割

如果日志都放在一个文件中,随着项目的运行,日志文件会越来越大,需要对日志文件进行分割。日志框架考虑到了这一点,会自动配置。
默认日志文件超过10M就进行分割,并且设定其命名格式。

logging:logback:rollingpolicy:max-file-size: 10MBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

注解的使用

lombok提供 @Slf4j 会提供一个日志对象 log,实际工作中直接使用就可以。

@Slf4j
@RequestMapping("/logger2")
@RestController
public class LoggerController2 {@RequestMapping("/log")public String print() {log.info("使用日志对象打印日志");System.out.println("使用sout打印日志");return "success";}
}
http://www.xdnf.cn/news/27667.html

相关文章:

  • 计算机软考中级 知识点记忆——排序算法 冒泡排序-插入排序- 归并排序等 各种排序算法知识点整理
  • PostgreSQL 常用客户端工具
  • 计算机网络 3-4 数据链路层(局域网)
  • MongoDB导出和导入数据
  • leetcode125.验证回文串
  • 网络编程 - 4 ( TCP )
  • 学习设计模式《三》——适配器模式
  • PointCore——利用局部全局特征的高效无监督点云异常检测器论文与算法解读
  • 2025.04.19【Chord diagram】| 弦图绘制技巧大全
  • JMETER使用
  • 论文阅读:2024 ICLR Workshop. A STRONGREJECT for Empty Jailbreaks
  • 图像预处理-绘制图像轮廓与凸包
  • 【Unity】bug记录——部分物体突然不受animator控制
  • No package docker-ce available问题的解决
  • 动手实现文本生成模型:基于 Decoder-only Transformer (PyTorch)
  • 在Ubuntu中安装hadoop的详细过程
  • sqli-labs之Less-7 GET注入写shell
  • 【MySQL数据库】数据类型
  • Git 中修改某个特定的commit提交内容
  • Jsp技术入门指南【七】JSP动作讲解
  • 怎么查看LLM Transformer 架构进行并行计算和设备映射
  • 海量聊天数据处理:基于Spring Boot与SharingJDBC的分库分表策略及ClickHouse冷热数据分离
  • React 第三十三节 ReactRouter 中 useSearchParams 使用详解及注意事项
  • 【数据结构】二叉搜索树
  • SQL注入相关知识
  • 深度解析接口:构建代码规范与实现多态的基石
  • docker转移镜像
  • db中查询关于null的sql该怎么写
  • 测试模板1
  • Linux—I/O复用---select、poll、epoll