Mybatis 系列 4:引入日志框架

为什么要用日志?

我们以前要看一个信息,一般使用的是 System.out.println 来打印的,额,这种方式比较 low,需要在代码里各种写 System.out.println,是会受到鄙视的。。。

使用日志框架的好处:

0、比起 System.out.println,日志框架可以把日志的输出和代码分离;

1、日志框架可以方便的定义日志的输出环境,控制台,文件,数据库,相比 System.out.println 只能输出到控制台要好很多;

2、日志框架可以方便的定义日志的输出格式和输出级别,也就是说我们想看哪个级别的日志就开启哪个级别的日志;

常见的日志框架:

在这里插入图片描述

0、JDK logging:JDK 1.4 版本以后开始提供的一个自带的日志库实现,比较弱,功能简单,不支持占位符显示,拓展性差,一般不用;

1、Apache 的 Commons Logging:严格上说,Commons Logging 是日志的一种规范,一种接口,被 Apache 给定义了,日志的规范本身不提供实现,可以通过动态查找的机制去找出真正的日志框架实现库;

2、Log4j:Apache 下功能强大的日志库实现,可以把日志输出到文件,控制台,还可以允许自定义日志格式和日志等级,帮助开发者全方位的掌控日志信息;

3、Log4j 2:是 Log4j 的升级,但是二者之间没有本质关系,基本上把 Log4j 版本的核心全部重构,而且基于 Log4j 做了很多的优化和升级。

4、SLF4J:本质也是日志的规范,出现的比较晚,很多之前的日志技术就没有来遵循它,所有得自己提供其他日志技术框架的桥梁,也就是说使用时得拷贝整合包(比如使用 Log4j 的时候,要遵循 SLF4j 的规范,就需要如图中的 Slf4j-log4j12-xx.jar 包)。

这里有个小故事:

当年 Apache 说服 Log4j 以及其他的日志框架按照 Commons-Logging 的标准来编写,但是由于 Commons-Logging 的加载有点问题,实现起来不友好。因此 Log4j 的作者就创作了 SLF4j,也因此与 Commons-Logging 二分天下。

5、Logback:由 Log4j 创始人设计的另一个开源日志组件,也是作为 Log4j 的替代者出现的,速度比 Log4j 高,而且官方是建议和 SLF4j 一起使用。

Logback、SLF4j、Log4j 都是出自同一个人,所有默认对 SLF4j 无缝整合。

日志级别:

从高到底分别是:

ERROR > WARN > INFO > DEBUG > TRACE

如果设置级别为 INFO,则优先级高于等于 INFO 级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如 DEBUG 和 TRACE 将不被输出。

总结:日志级别越低,输出的日志越详细。

下面,我们参照 Mybatis 官方文档,进行日志框架(Log4j)配置:
(点击图片放大)

0、在 resources 根目录下创建 log4j.properties 文件:

在这里插入图片描述

可以看到日志文件的组成有 3 部分:

分别是 root、logger、appender。

root:设置默认的日志输出级别和风格。

logger:设置自定义日志级别和风格。

appender:可以把日志输出到控制台或文件中去。

语法说明:

root 根配置(全局配置)语法:log4j.rootLogger=[level], appenderName, appenderName, …

把指定级别以上的日志信息输出到指定的一个或者多个位置,level:ERROR > WARN > INFO > DEBUG > TRACE

logger 自定义配置,针对不同包、类、方法的日志个性化配置语法: log4j.logger.+包、类、方法名=[level]

appender 日志输出目的地及格式配置语法:log4j.appender.+

1、通过 mybatis-config.xml 全局配置文件进行日志框架配置:

在这里插入图片描述

通过查询 Mybatis 官方文档的 XML 配置 -> settings(设置)知道:

设置名为 logImpl,描述为:指定 MyBatis 所用日志的具体实现,未指定时将自动查找,有效值为:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING。则可配置日志框架。

2、拷贝相应 jar 包,或引入依赖:

在这里插入图片描述

配置好后,运行系列上一篇文章中写好的测试用例,可以看到控制台已经可以打印出相应的日志信息:

(点击图片放大)

可以看到控制台输出了 DEBUG 和 TRACE 级别的日志信息,因为我们自定义设置的 Mapper 映射文件对应包下的日志级别为 TRACE,所以会打印出 TRACE 级别以上的日志信息。

最后说一下,在项目中,有时候我们需要跟踪日志,会在代码中自定义类似如下日志:

在这里插入图片描述
然后就可以通过设置日志级别来查看对应的信息。

tips:查看官方文档是学习一门新语言最有效的方法。

系列预告:Mybatis 系列 5:OGNL 表达式

关注「阿泽学长」解锁更多干货。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值