之前自己单独写项目的时候习惯上面写一个@Slf4j,下面就直接log.info输出日志来debug,而且没问题就不打日志,有问题打完日志也不删。这是一个不好的习惯。
日志级别介绍及为什么要日志级别分离
简而言之就是
TRACE < DEBUG < INFO < WARN < ERROR
当你设定越高的层级,就会展现出越多层级的信息,log 量也会飞快的飙升。现在接触的项目最常用的三种输出分别是debug、info、error,分别用于调试、输出重要信息、报错
开始的时候无脑打info日志,自己本机小项目调试调试没问题,但如果是正式环境里分分钟几十万甚至几亿qps下去,马上就能用日志文件把服务器磁盘挤爆了……
所以规范化日志输出,正式环境就别打debug了,循环输出普通信息也别打,多看看日志文件多排除排除bug,就会知道日志文件应该咋写了。
@Slf4j 是啥
@Slf4j 用起来很爽,配好环境之后直接一个注释打上去,然后就可以直接 log.info 输出了,同时“ {} ” 占位符的拼接使得输出日志非常简便,至少不用自己一个个打“+”,甚至专门为了日志输出去写一个tostring方法。
那@Slf4j本质是啥呢?
Causes lombok to generate a logger field.
Complete documentation is found at the project lombok features page for lombok log annotations .
Example:
@Slf4j
public class LogExample {
}
will generate:
public class LogExample {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
}
This annotation is valid for classes and enumerations.
Ctrl点进去能看到官方给的示例,简而言之就是帮忙造一个名为log的Logger。
那进一步呢?
@Slf4j 本身采用了外观设计模式,作用是隐藏掉具体日志实现的细节,提供一个统一的入口(直接一个注释加一行代码打日志可太香了)
它本身并不提供日志服务功能,得通过slf4j-simple、logback、slf4j-log4j12来或直接或间接地实现。如果在网上看了半吊子教程直接在自己本机小项目只引用一个slf4j的依赖,就会直接报错加载不了类。