目录
1. 为什么要使用日志
2. 日志的基本使用
3.日志的级别
4. 日志的优点
5.关于SLF4j与其它日志框架
如果始终使用 “System.out.println() ”类似的输出语句来输出某些信息,在开发过程中,可能是无所谓的,但是当项目开发完成后,这些信息不应该再被显示,如果使用删除源代码、注释源代码的做法,则工作量较大,也不利于后续可能需要进行的功能更新或维护。
使用日志,可以根据级别进行输出,并根据不同的运行环境(开发环境、交付后的生产环境)来设置不同的显示级别,以保证某些信息只在开发过程中是被输出且可见的,而这些信息在交付后的生产环境中将不可见。
在Spring Boot项目中,当添加了Lombok依赖后,可以在任意类上添加@Slf4j注解,则可以在类中使用名为log的变量调用方法来输出日志(此变量是在编译期由Lombok添加的)。
2.1 调用输出日志的方法时,建议使用的方法是:
public void info(String format, Object... arguments);
即:第1个参数是字符串,表示需要输出的内容,但此字符串的各变量值均使用{}作为占位符,然后,第2个参数是可变参数,是Object类型的,则第1个参数的字符串值中的各占位符对应的值均使用第2个参数依次表示。
2.2 使用示例:
int m = 2022;
int n= 1225;
String a="This is a sample"
log.info("{}:m的值为{}, n的值为{}, m+n的值为{}", a , m, n, m+n);
3.1 显示级别
在SLF4j中,日志的可显示级别,从信息的重要程度,从低到高依次为:
- trace:跟踪信息
- debug:调试
- info:一般信息
- warn:警告
- error:错误
以上5个级别在使用log变量输出日志时都有对应的方法,方法名称就是这5个级别的名称,且这5个级别的方法的重载都是相同的!
根据调用的方法不同,输出的日志的级别就不同,例如,当调用info()系列方法(重载的多个方法)时,输出的日志就是info级别的,
当调用debug()系列方法时,输出的日志就是debug()级别的。
3.2 设置日志的显示级别
在Spring Boot项目中,在application.properties中,使用以下语法可以设置日志的显示级别:
logging.level.包名.类名=日志的显示级别
示例
logging.level.com.example.demo.demo=debug
以上配置就可以将指定的类中的日志设置为指定的显示级别。
也可以配置为:
logging.level.包名=日志的显示级别
示例
logging.level.com.example.demo=debug
以上配置就可以将指定的包及其子孙包中所有类的日志设置为指定的显示级别。
一旦设置显示级别后,将显示设置级别及更重要的级别的日志,例如,设置为debug时,将显示debug、info、warn、error都将显示,如果设置为warn时,将只显示warn、error级别的日志。
日志的优点主要有:
- 可以配置来控制日志的显示级别
- 日志的文本会被缓存,多次执行时,输出效率更高
- 在进阶使用中,还可以将日志输出到指定的其它位置,例如文件、数据库等
log4j、logback等日志框架都是比较主流的日志框架,而`SLF4j`是一套标准,它并没有具体的实现日志的功能,所以,SLF4j与log4j / logback等更像是一个接口与实现类的关系(本质并不是)。