在调用log变量的方法来输出日志时,有以上5个级别对应的方法,从不太重要,到非常重要
 调用不同的方法,就会输出不同级别的日志。
- trace:跟踪信息
- debug:调试信息
- info:一般信息
- warn:警告信息
- error:错误信息
问题:SpringBoot只打印了info等级的日志?

原因:使用了Spring Boot(例如在测试类上添加了@SpringBootTest注解),日志的默认显示级别是info,则只会显示info、warn、error级别的日志,不会显示trace、debug级别的日志。
解决方法
1.首先我们确认使用了工具打印日志
 在pom.xml中添加依赖
        <!-- Lombok的依赖项,主要用于简化POJO类的编写 --><!-- 添加了Lombok后,在任何类的声明之前,添加@Slf4j注解,则编译期会自动声明一个名为log的变量,所以,可以在类中通过此变量来输出日志。 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><scope>provided</scope></dependency>
使用前,在任何类的声明之前,添加@Slf4j注解,如下则编译期会自动声明一个名为log的变量
@Slf4j
@SpringBootTest
class SmallApplicationTests {@Testvoid logTest(){int x = 1;int y = 2;System.out.println("x = " + x + ", y = " + y + ", x + y = " + (x + y)); // 传统做法log.trace("111x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.debug("222x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.info("333x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.warn("444x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法log.error("555x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法}
}
2.配置展示日志等级
 在Spring Boot项目中,可以在配置文件(application.properties / application.yml / 相关Profile配置)中配置logging.level.包名属性,以指定某个包下的所有类的默认日志显示级别,此属性的值为5个级别中的某1个。
例如,在application.yml添加配置:
#加载Spring Boot的情况下,日志的默认显示级别是info,只会显示此级别及更加重要的级别的日志info.warn,error
#为了所有日志都现在,包括trace(跟踪日志),debug (调试日志)
#实际尝试有效
logging:level:com.luoyang.small: trace

或者在application.properties中添加配置
#实际尝试有效
logging.level.com.luoyang.small=TRACE
结果:
 
附加信息
提示: Mybatis框架会生成各Mapper接口的对象,这些对象在执行SQL语句时,也会输出日志。如果想看的trace和info级别的日志,也需要把日志的显示级别设置为较低的trace级别
日志占位符: 在调用日志的方法时,如果输出的信息中包含变量值,可以使用{}作为占位符,表示此处是一个变量值,然后,通过Object... args依次传入各占位符对应的值,如下:
    @Testvoid logTest(){int x = 1;int y = 2;System.out.println("x = " + x + ", y = " + y + ", x + y = " + (x + y)); // 传统做法log.trace("111x = {}, y = {}, x + y = {}", x , y , x + y); // 使用日志输出变量的做法}
以上使用日志输出时,不会涉及到字符串的拼接,所以,执行效率会更高。并且,以上方法的第1个参数是字符串常量,是在内存中的字符串常量池中的,也可以一定程度上提高执行效率。
创造价值,乐哉分享!