前言
本文对slf4j,以及对slf4j在工作中的实现进行简要说明
一、slf4j是什么?
slf4j全称Simple logging facade for Java,它是日志框架、日志接口,可以采用其具体的实现类(Logger类以及LoggerFactory类)去完成日志的打印。
二、slf4j的实现
第一步:通过LoggerFactory类用来获取Logger对象
private static final Logger LOGGER = LoggerFactory.getLogger(xxx.class);
代码说明如下
1、getLogger()方法的入参是当前类(xxx)的字节码对象,这样才能在打印日志信息时显示为由当前类打印。
2、为什么用private修饰?
答:因为LOGGER对象只能在当前类中使用,避免其他类调用(存在一种情况:大量的类中的日志都是上述写法,连对象名LOGGER都一样,所以采用private可以有效避免其他类调用)。
3、为什么用static定义?
答:用static定义,在xxx类被加载时,LOGGER作为静态对象,只会在创建一次且唯一,可避免重复;但如果是非静态对象,其他类引用xxx类时,LOGGER对象会再次创建,会造成内存浪费。
4、为什么用final?
答:因为final可以避免LOGGER对象被修改,尤其是如果xxx.class字节码信息被修改,会导致,打印日志出现紊乱,与类不一致。
第二步:Logger类用来打印日志
LOGGER.debug("debug日志");
LOGGER.infor("infor日志");
LOGGER.warn("warn日志");
LOGGER.error("error日志");
代码说明如下
1、LOGGER.debug、LOGGER.info、LOGGER.warn、LOGGER.error这几个的区别
答:日志级别不同,error -> warn -> info -> debug,每个级别能输出当前及以上级别的信息,debug会输出info warn error 的信息,但是error不会输出debug info warn的信息。
2、SLF4J支持{}作为占位符,param作为参数可在打印时显示,不需要进行字符串拼接提升了开发效率。
LOGGER.infor("infor日志:{}",param);
三、补充说明
项目中的日志级别设置 logging.level.root=info
1、当前项目中的日志级别设置为info级别,debug日志不打印,打印info warn error级别的日志
2、项目中日志级别设置在properties配置文件中