Spring Boot日志

文章目录


打印日志

 在程序中获取日志对象需要使⽤⽇志⼯厂 LoggerFactory,获取对象后可以先使⽤ info() ⽅法来输出日志。

java 复制代码
@RestController
public class LoggerController {
	private static Logger logger = LoggerFactory.getLogger(LoggerController.class);
	
	@RequestMapping("/logger")
	public String logger(){
		logger.info("--------------要输出⽇志的内容----------------");
		return "打印⽇志";
	}
}

日志框架

 打印日志时使用的Logger 对象是属于 org.slf4j 包下的

 SLF4J是门面模式的典型应用,在 Java 生态系统中,存在多种日志框架(如 Log4j、JUL、Logback 等),它们各有优缺点。SLF4J 的主要作用就是提供统一的日志 API,并不涉及到具体的日志逻辑实现,从而避免日志框架之间的冲突。可以理解为小爱同学,通过小爱同学可以控制整个屋子的灯开关,但其本质并不实现灯的开关,而是由每个灯内部实现的。


图片来源

日志格式

 日志的输出包含以下内容

  • 时间:精确到毫秒
  • 日志级别:ERROR, WARN, INFO, DEBUG 或TRACE
  • 进程ID:例子中是22000
  • 线程名:例子中是main
  • Logger名(通常使⽤源代码的类名)
  • 日志内容

日志级别

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

  • FATAL: 致命信息,表示需要立即被处理的系统级错误.
  • ERROR: 错误信息, 级别较⾼的错误⽇志信息, 但仍然不影响系统的继续运行
  • WARN: 警告信息, 不影响使⽤, 但需要注意的问题
  • INFO: 普通信息, ⽤于记录应⽤程序正常运行时的⼀些信息, 例如系统启动完成、请求处理完成等
  • DEBUG: 调试信息, 需要调试时候的关键信息打印
  • TRACE: 追踪信息, 比DEBUG更细粒度的信息事件(除非有特殊用意,否则请使用DEBUG级别替代)

 日志级别是开发⼈员自己设置的. 开发⼈员根据自己的理解来判断该信息的重要程度,SpringBoot 默认的日志框架是Logback, Logback没有 FATAL 级别,它被映射到 ERROR,当出现 FATAL 级别时,需要系统管理员紧急介⼊处理。

java 复制代码
@RequestMapping("/printLog")
public String printLog() {
	logger.trace("trace级别的日志");
	logger.debug("debug级别的日志");
	logger.info("info级别的日志");
	logger.warn("warn级别的日志");
	logger.error("error级别的日志");

return "打印不同级别的⽇志" ;
}

 结果只打印了info, warn和error级别的日志,这与日志级别的配置有关, 日志的输出级别默认是 info级别, 所以只会打印大于等于此级别的日志, 也就是info、warn 和 error。

日志配置

日志级别配置

 日志级别配置只需要在配置文件中设置 " logging.level " 配置项即可

xml 复制代码
logging:
  level:
    root: debug

 此时设置默认的输出级别为 debug ,上面的代码会输出debug、info、warn 和 error级别的日志。

日志持久化

 日志持久化有两种方式

  • 配置日志文件名 logging.file.name
  • 配置日志的存储目录 logging.file.path

 如下所示,日志相关的信息会存放到 logger/文件夹下

xml 复制代码
logging:
  file:
    path: logger/

 配置name时,会给存放日志信息的文件进行命名

xml 复制代码
logging:
  file:
    name: logger/springboot.log

当二者同时配置时,以name的配置为准

日志分割配置

 如果日志都放在⼀个文件中, 随着项⽬的运行,日志文件会越来越⼤, 需要对日志文件进行分割,配置项如下所示,

  • logging.logback.rollingpolicy.file-name-pattern 表示日志分割后的文件名格式,默认值为${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
  • logging.logback.rollingpolicy.max-file-size 表示日志文件超过这个大小就自动分割,默认值为10MB
xml 复制代码
logging:
  logback:
    rollingpolicy:
      max-file-size: 1KB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

日志格式配置

 打印日志的格式,也是支持配置的,支持控制台和日志文件分别设置,配置项如下,

  • logging.pattern.console 表示控制台日志格式
  • logging.pattern.file 表示日志文件的日志格式

通过lombox进行日志输出

通过添加 lombox,使用 @slf4j 注解输出日志,使用后会帮我们提供⼀个日志对象 log 进行输出

java 复制代码
@Slf4j
@RestController
public class LoggerController {

	@RequestMapping("/logger")
	public String logger(){
		log.info("--------------要输出⽇志的内容----------------");
		return "打印⽇志";
	}
}
相关推荐
AI领路人.5 小时前
[特殊字符] 用 OpenClaw 实现一个 C++ 复刻版 QuantClaw
websocket·单元测试·discord·rest api·内存占用·c++17
Flittly5 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring
番茄炒鸡蛋加糖8 小时前
项目技术点总结--四大核心技术+缓存
缓存
大飞记Python8 小时前
AI大模型Token计费全解析:输入/输出、缓存命中、阶梯计价一文看懂
人工智能·缓存
Rain的Java大神之路9 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
小强库计算机毕业设计11 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
毕设单片机14 小时前
顺顺救助站流浪动物领养系统的设计与实现46649----SpringBoot + Vue.js + MySQL|领养审核、寻宠发布、救助站点与动物论坛协同
java·spring boot·管理系统·流浪动物
云烟成雨TD14 小时前
Micrometer 系列【63】统一观测:基于 Spring Boot 的生产级演示案例 | 基于 OTLP 集成 Prometheus + Jaeger
spring boot·云原生·prometheus
天疆说14 小时前
04 稳定性与性能调优实录:OOM 崩溃、并发槽位、前缀缓存与 DSpark 调参
linux·运维·缓存
csdn2015_14 小时前
springboot +mybatis 查询myql开启程序级别缓存
spring boot·缓存·mybatis