一、为什么要对日志进行分级

无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。

这些输出语句若在程序运行时全部执行, 则势必会降低运行效率。例如, 使用 System.out.println() 将信息输出到控制台,则所有的该输出语句均将执行。会大大降低程序的执行效率。而要使其不输出,唯一的办法就是将这些输出语句逐个全部删除。这是个费时费力的过程。

将日志信息进行分级管理,便可方便的控制信息输出内容及输出位置:哪些信息需要输出,哪些信息不需要输出,只需在一个日志输出控制文件中稍加修改即可。而代码中的输出语句不用做任何修改。

从这个角度来说,代码中的日志编写,其实就是写大量的输出语句。只不过,这些输出语句比较特殊,它们具有级别,在程序运行期间不一定被执行。它们的执行是由另一个控制文件控制。

二、日志级别

logback有5种级别,分别是TRACE < DEBUG < INFO < WARN < ERROR,定义于ch.qos.logback.classic.Level类中。 

级别等级:等级从低到高分别是TRACE < DEBUG < INFO < WARN < ERROR

logging.level设置日志级别,后面跟生效的区域,比如root表示整个项目,也可以设置为某个包下,也可以具体到某个类名(日志级别的值不区分大小写)

如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来

例如,如果设置优先级为WARN,那么ERROR、WARN 2个级别的log能正常输出,而INFO、DEBUG、TRACE级别的log则会被忽略。

Trace:是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出.

Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.

Info:消息在粗粒度级别上突出强调应用程序的运行过程.

Warn:输出警告及warn以下级别的日志.

Error:输出错误信息日志.

此外OFF表示关闭全部日志,ALL表示开启全部日志。

通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别, 则应用程序中所有DEBUG级别的日志信息将不被打印出来。

优先级高的将被打印出来。项目上生产环境时候建议把debug的日志级别重新调为warn或者更高(项目中用的是ERROR),避免产生大量日志。再测试阶段,要想每条sql都打印日志,则需要将日志级别设置为debug。

注意:默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。实际开发中我们不需要直接添加该依赖。你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback

 
 
 
 

 

 

posted on 2022-02-15 09:18  周文豪  阅读(654)  评论(0编辑  收藏  举报