[TOC]
slf4j 类
描述:Slf4j 类是一个简单打印日志的工具,任何一个日志类库。但是不是一个日志的实现而是一个抽象层,允许在后台使用任何一个日志类库。
Slf4j特点:
1.使得日志独立于任何一个特定的日志实现,意味着不需要管理多个日志配置或者多个日志类库,因为提供了统一的记录日志的接口,对不同日志系统的具体实现进行了抽象化,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过绑定具体的日志系统来实现。
2.补充了log4j没有支持的输出打印方式,SLF4J支持{}作为占位符,等价于C语言中的%s,而不必再进行字符串的拼接节省字符串的内存消耗。
3.因为 String 字符串的拼接会使用 StringBuilder 的 append()方式,有一定的性能损耗。使用占位符仅是替换动作,可以有效提升性能
4.使用指定类初始化日志对象,在日志输出的时候可以打印出日志信息所在类
5.每个Logger都被了一个日志级别(log level),用来控制日志信息的输出。
代码语言:javascript复制#日志级别从高到低分为:
A:off 最高等级,用于关闭所有日志记录。
B:fatal 指出每个严重的错误事件将会导致应用程序的退出。
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
D:warm 表明会出现潜在的错误情形。
E:info 一般和在粗粒度级别上,强调应用程序的运行全程。
F:debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
G:all 最低等级,用于打开所有日志记录。
LoggerFactory类说明:
- getLogger()-获取日志对象
- getILoggerFactory()-获取真实的日志工厂
- performInitialization()-初始化日志操作
- singleImplementationSanityCheck()-特定类存在判断
- bind()-绑定获取真实的日志处理类
基础使用实例:
代码语言:javascript复制//1.导入 slf4j 日志包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//2.获取 slf4j 日志对象
//LoggerFactory.getLogger 可以在IDE控制台打印日志,便于开发一般加在最上面:
private final static Logger logger = LoggerFactory.getLogger(xxxController.class); //使用指定类初始化日志对象
//3.利用对象方法输出 slf4j 日志
logger.debug("Processing trade with id: {} and symbol: {}", id, symbol);
logger.info("支付开始-学校id{},用户openId{},支付订单号{},总金额{},订单号List{}",schoolId, openId, zfddh, total, orderNumList);
logger.error(throwable.getMessage(), throwable); //打印异常信息 throws Throwable,一般是将捕捉到的Exception对象作为日志记录的最后一个参数
//4.控制台输出示例:
2019-06-24 18:45:49.348 INFO 7308 --- [bio-8080-exec-8] c.x.p.m.v.controller.VoteController : missing parameter