百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

MyBatis系列-2-日志配置(mybatis-plus 日志)

wptr33 2025-03-24 21:26 16 浏览

日积月累,方成大器。

各大网站:

Mybatis官方技术文档 https://mybatis.org/mybatis-3/zh/index.html
Mybatis源码包下载:https://github.com/mybatis/mybatis-3/releases
所有代码及笔记gitee路径:https://gitee.com/simple-coding/all-demo-code.git

一、关于Mybatis开发

要使用Mybatis开发只需引入mybatis-x.x.x.jar即可,想其它的日志等,如果需要可以另外引入包进行扩展。

本案例使用最新版本:mybatis-3.5.9.jar

二、日志配置

如果我们不引入第三方的日志包,那mybatis就不能对日志进行输出了吗?

首先,要知道Mybatis不引入第三方日志包,也能进行日志输出(默认日志功能禁用),只不过只能进行控制台输出,不能进行文件输出;另外,对于第三方日志,mybatis有特定的加载顺序,如果引入了多个日志实现也可以在主配置中通过settings进行配置,告诉mybatis我要用哪个进行输出

最新版本,第三方加载顺序如下、源码如下图(不同的mybatis版本可能不一样):

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j (deprecated since 3.5.9)
  • JDK logging

MyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具。它会使用第一个查找得到的工具(按上文列举的顺序查找)。如果一个都未找到,日志功能就会被禁用。

Mybatis日志加载顺序

三、Mybatis支持哪些日志

Mybatis支持哪些日志的配置,那就要看我们的主配置文件中settings配置了,配置如下


日志实现指定

说白了就是支持常用实现JUL(java util logging)、logback、log4j、log4j2,而SLF4J和COMMONS_LOGGING其实就是日志门面技术,也就是接口。关于日志框架我们后续,会单独讲一下。

四、日志演示

1.STDOUT_LOGGING

STDOUT_LOGGING :是Mybatis内置实现,只做控制台输出。配置只需一步,也不需要引入第三方依赖:

  • 指定settings配置
  • 效果图

运行结果

2.SLF4J

首先声明SLF4J是日志门面技术,通过一系列中间转换操作,可以适配现有的任何日志技术。本节只做简单的配置实现logback。

  • 引入第三方包


		ch.qos.logback
		logback-classic
		1.2.11
  • 指定settings配置

不配置也行,第三方日志只有一个日志实现的情况下,有默认加载顺序,详见:第二部分、日志配置


  • 引入logback配置文件:logback.xml

开启debug级别,用于输出SQL语句。



    
    
    
    
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    
    
    
        
            
            ${LOG_HOME}/%d{yyyy-MM-dd}/smifc.log.%d{yyyy-MM-dd}-%i.log
            10MB
            20
            100GB
        
        
            
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
    
    
    
        
    
    
        
    

  • 效果图

logback

3.JDK_LOGGING

JDK_LOGGING是个啥?其实它就是JDK自带的日志。也不需要我们引入第三方包。

jdk自带的日志,配置文件加载有三种方法:1.默认路径【
JRE_HOME/lib/logging.properties】;2.自定义加载配置文件路径【
java.util.logging.config.file】;3.自定义加载配置类【
java.util.logging.config.class】需要通过readConfiguration(InputStream) 实现

看下JDK源码LogManager加载配置实现:

JDK源码LogManager加载配置实现

  • 自定义加载配置文件路径【java.util.logging.config.file】实现

自定义加载路径

  • 引入logging.properties
handlers=java.util.logging.ConsoleHandler
.level=ALL

#mapper的命名空间
test=ALL

java.util.logging.ConsoleHandler.level=ALL
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tT.%1$tL %4$s %3$s - %5$s%6$s%n
  • 主配置文件指定日志实现
  • 效果图

运行结果

4.LOG4J、LOG4J2

LOG4J(log4j.properties)、LOG4J2(log4j2.xml)这两个实现和logback实现大同小异,直接引入实现jar包,变更主配置实现即可。

  • jar包引入

引入jar包

  • 主配置配置

指定日志实现

  • 配置文件

配置文件

  • 运行结果

运行结果

5.COMMONS_LOGGING

COMMONS_LOGGING (
commons-logging.properties)是一个日志门面技术,也就是接口,其自身自带简单实现

org.apache.commons.logging.impl.SimpleLog
也支持jdk的日志实现。这里我们引入commons-logging包使用其的简单日志实现。

另外,支持的实现如下:

 //LogFactoryImpl.java
 private static final String[] classesToDiscover = new String[]{"org.apache.commons.logging.impl.Log4JLogger", "org.apache.commons.logging.impl.Jdk14Logger", "org.apache.commons.logging.impl.Jdk13LumberjackLogger", "org.apache.commons.logging.impl.SimpleLog"};
  • 只引入commons-logging包


 commons-logging
 commons-logging
 1.2
  • 定义commons-logging.properties指明使用的日志实现
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
  • 定义simplelog.properties配置日志信息
org.apache.commons.logging.simplelog.defaultlog=all
org.apache.commons.logging.simplelog.log.test=all
org.apache.commons.logging.simplelog.showlogname=true
org.apache.commons.logging.simplelog.showShortLogname=true
org.apache.commons.logging.simplelog.showdatetime=true
org.apache.commons.logging.simplelog.dateTimeFormat=yyyy-MM-dd hh:mm:ss
  • 主配置指定实现

  • 效果

运行结果

五、总结

在以上的日志配置中,我引入了所有的日志实现,通过控制主配置文件中配置

 

达到,具体要使用哪个的目的。如果整合Mybatis时有多个日志实现,可通过此配置控制。



相关推荐

每天一个编程技巧!掌握这7个神技,代码效率飙升200%

“同事6点下班,你却为改BUG加班到凌晨?不是你不努力,而是没掌握‘偷懒’的艺术!本文揭秘谷歌工程师私藏的7个编程神技,每天1分钟,让你的代码从‘能用’变‘逆天’。文末附《Python高效代码模板》,...

Git重置到某个历史节点(Sourcetree工具)

前言Sourcetree回滚提交和重置当前分支到此次提交的区别?回滚提交是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候。...

git工作区、暂存区、本地仓库、远程仓库的区别和联系

很多程序员天天写代码,提交代码,拉取代码,对git操作非常熟练,但是对git的原理并不甚了解,借助豆包AI,写个文章总结一下。Git的四个核心区域(工作区、暂存区、本地仓库、远程仓库)是版本控制的核...

解锁人生新剧本的密钥:学会让往事退场

开篇:敦煌莫高窟的千年启示在莫高窟321窟的《降魔变》壁画前,讲解员指着斑驳色彩说:"画师刻意保留了历代修补痕迹,因为真正的传承不是定格,而是流动。"就像我们的人生剧本,精彩章节永远...

Reset local repository branch to be just like remote repository HEAD

技术背景在使用Git进行版本控制时,有时会遇到本地分支与远程分支不一致的情况。可能是因为误操作、多人协作时远程分支被更新等原因。这时就需要将本地分支重置为与远程分支的...

Git恢复至之前版本(git恢复到pull之前的版本)

让程序回到提交前的样子:两种解决方法:回退(reset)、反做(revert)方法一:gitreset...

如何将文件重置或回退到特定版本(怎么让文件回到初始状态)

技术背景在使用Git进行版本控制时,经常会遇到需要将文件回退到特定版本的情况。可能是因为当前版本出现了错误,或者想要恢复到之前某个稳定的版本。Git提供了多种方式来实现这一需求。...

git如何正确回滚代码(git命令回滚代码)

方法一,删除远程分支再提交①首先两步保证当前工作区是干净的,并且和远程分支代码一致$gitcocurrentBranch$gitpullorigincurrentBranch$gi...

[git]撤销的相关命令:reset、revert、checkout

基本概念如果不清晰上面的四个概念,请查看廖老师的git教程这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改存起来。后来用多了,也就明白了为什么。gi...

利用shell脚本将Mysql错误日志保存到数据库中

说明:利用shell脚本将MYSQL的错误日志提取并保存到数据库中步骤:1)创建数据库,创建表CreatedatabaseMysqlCenter;UseMysqlCenter;CREATET...

MySQL 9.3 引入增强的JavaScript支持

MySQL,这一广泛采用的开源关系型数据库管理系统(RDBMS),发布了其9.x系列的第三个更新版本——9.3版,带来了多项新功能。...

python 连接 mysql 数据库(python连接MySQL数据库案例)

用PyMySQL包来连接Python和MySQL。在使用前需要先通过pip来安装PyMySQL包:在windows系统中打开cmd,输入pipinstallPyMySQL ...

mysql导入导出命令(mysql 导入命令)

mysql导入导出命令mysqldump命令的输入是在bin目录下.1.导出整个数据库  mysqldump-u用户名-p数据库名>导出的文件名  mysqldump-uw...

MySQL-SQL介绍(mysql sqlyog)

介绍结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同...

MySQL 误删除数据恢复全攻略:基于 Binlog 的实战指南

在MySQL的世界里,二进制日志(Binlog)就是我们的"时光机"。它默默记录着数据库的每一个重要变更,就像一位忠实的史官,为我们在数据灾难中提供最后的救命稻草。本文将带您深入掌握如...