spring boot日志介绍
随着时间推移,日志文件会变得巨大且难以管理。通过日志分割策略,可以将日志按日期(每天一个文件)、按文件大小达到阈值时自动滚动创建新文件,从而保持日志文件的可控大小和便于检索管理。第二种方式和第一种方式本质是一样的,因为@Slf4j 帮我们自动创建了一个名字为log的日志打印对象(作用于源码阶段),进而可以直接调用log。在 Spring Boot 项目中,一般使用 SLF4J 的接口来书写日志代码
目录
1. 日志框架基础
Spring Boot 默认使用 Spring Framework Logging 模块以及底层的 SLF4J + Logback 组合。
- SLF4J(Simple Logging Facade for Java):统一日志门面,为各种日志框架提供统一抽象接口。
- Logback:高性能日志实现框架,作为 Spring Boot 默认的日志实现。
2. 日志打印方式(API 使用方式)
在 Spring Boot 项目中,一般使用 SLF4J 的接口来书写日志代码,从而保持与底层实现解耦。典型使用方法如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExampleClass {
private static final Logger logger = LoggerFactory.getLogger(ExampleClass.class);
public void doSomething() {
logger.info("This is an info log message.");
logger.debug("Debug level message: {}", someVariable);
logger.error("An error occurred.", exceptionObject);
}
}
通过 LoggerFactory 获取 Logger,然后用 debug、info、warn、error 等方法进行日志输出。
还有另一种常见方法:
@Slf4j//作用于源码阶段
@RestController
@RequestMapping("/p2")
public class LoggerLevelController2 {
@RequestMapping("/p")
public String print(){
//直接用log打印即可
log.trace("trace"+"日志");
log.debug("debug"+"日志");
log.info("info"+"日志");
log.warn("warn"+"日志");
log.error("error"+"日志");
return "打印日志";
}
}
第二种方式和第一种方式本质是一样的,因为@Slf4j 帮我们自动创建了一个名字为log的日志打印对象(作用于源码阶段),进而可以直接调用log。
3. 日志级别(Logging Level)
常用的日志级别从低到高为:TRACE < DEBUG < INFO < WARN < ERROR<FATAL
- TRACE:最详细的信息,一般用于问题诊断和跟踪。
- DEBUG:调试级别信息,侧重于开发过程中的细粒度信息。
- INFO:关键信息,标明应用程序运行状态变化,如启动、停止、配置加载完成等。(一般认为是正常信息)
- WARN:潜在有问题的状况,不一定是错误,但值得关注。
- ERROR:表示系统中的错误事件,需要尽快调查和修复。
- FATAL: 致命信息,表示需要立即被处理的系统级错误.
Spring Boot 默认的日志级别是 INFO,即低于 INFO 的日志(如 DEBUG、TRACE)默认不显示。
4. 日志配置(Logging Configuration)
Spring Boot 提供多种方式定制日志设置。常见的配置文件为 application.properties 或 application.yml 中的配置项。
这里以yml文件为例:
1、更改整个程序的日志级别
logging:
level:
root: error
这样只会打印,等级大于等于error的日志,对于一个正常运行的程序,控制台几乎就没有日志了:
2、更改指定模块的日志级别
logging:
level:
root: error
com:
hyy:
captcha:
controller: info
com.hyy.captcha.controller目录下的程序将会打印大于等于info等级的日志:
5. 日志持久化(Logging Persistence)
存储相对路径:
logging:
file:
#设置日志文件的相对路径以及文件名
name: logger/my.log
执行程序后,产生了一个文件夹:
这个配置也可以是绝对路径,加上/即可:
logging:
file:
#设置日志文件的文件名
name: /logger/my.log
另外,还可以通过path来设置路径,但是name的优先级大于path:
file:
#设置日志文件的文件名
name: logger/my.log
# 设置日志文件的目录
path: D:/temp #只能设置路径,名字默认spring.log,有name不会生效
6. 日志分割与归档(Log Rotation)
随着时间推移,日志文件会变得巨大且难以管理。通过日志分割策略,可以将日志按日期(每天一个文件)、按文件大小达到阈值时自动滚动创建新文件,从而保持日志文件的可控大小和便于检索管理。
具体配置方式:
# 对日志进行分割
logback:
rollingpolicy:
max-file-size: 1KB #1kb分割一次
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i #可以设置分割文件的后缀
更多推荐
所有评论(0)