当前位置: 首页 > news >正文

Mybatis行为配置之Ⅳ—日志

专栏精选

引入Mybatis

Mybatis的快速入门

Mybatis的增删改查扩展功能说明

mapper映射的参数和结果

Mybatis复杂类型的结果映射

Mybatis基于注解的结果映射

Mybatis枚举类型处理和类型处理器

再谈动态SQL

Mybatis配置入门

Mybatis行为配置之Ⅰ—缓存

Mybatis行为配置之Ⅱ—结果相关配置项说明

Mybatis行为配置之Ⅲ—其他行为配置项说明

Mybatis行为配置之Ⅳ—日志

Mybatis整合Spring详解

Mybatis插件入门

Mybatis专栏代码资源

文章目录

  • 专栏精选
  • 引言
  • 摘要
  • 正文
      • logImpl
      • logPrefix
      • 配置log4j2日志系统
      • 配置logback日志系统
  • 总结

引言

大家好,我是奇迹老李,一个专注于分享开发经验和基础教程的博主。欢迎来到我的频道,这里汇聚了汇集编程技巧、代码示例和技术教程,欢迎广大朋友们点赞评论提出意见,重要的是点击关注喔 🙆,期待在这里与你共同度过美好的时光🕹️。今天要和大家分享的内容是Mybatis日志配置。做好准备,Let’s go🚎🚀

摘要

在这篇文章中,我们将介绍给Mybatis配置日志的基本方法,虽然在开发工作中Mybatis常作为整个系统的一个部分,而不会单独为其配置日志系统,但是给Mybatis配置日志还是很重要,比如调试过程中查看SQL查询日志,那么Mybatis的日志配置将会对它的运行逻辑产生怎样的影响呢,准备好开启今天的奇妙旅程吧。

正文

首图

在Mybatis中与日志相关的配置项有logImpllogPrefix两个,在日常开发工作中,logImpl相对更常用,而logPrefix不常用,下面简单介绍这两个配置

logImpl

备注:设置Mybatis日志的具体实现
可选值:

  1. SLF4J
  2. LOG4J(3.5.9 起废弃)
  3. LOG4J2
  4. JDK_LOGGING
  5. COMMONS_LOGGING
  6. STDOUT_LOGGING
  7. NO_LOGGING

默认值:自动
建议值:根据实际情况设置,尽量设置一个
建议原因:官方文档建议

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

不少应用服务器(如 Tomcat 和 WebShpere)的类路径中已经包含 Commons Logging,所以在这种配置环境下的 MyBatis 会把它作为日志工具,记住这点非常重要。这将意味着,在诸如 WebSphere 的环境中,它提供了 Commons Logging 的私有实现,你的 Log4J 配置将被忽略。MyBatis 将你的 Log4J 配置忽略掉是相当令人郁闷的(事实上,正是因为在这种配置环境下,MyBatis 才会选择使用 Commons Logging 而不是 Log4J)。如果你的应用部署在一个类路径已经包含 Commons Logging 的环境中,而你又想使用其它日志工具,你可以通过在 MyBatis 配置文件 mybatis-config.xml 里面添加一项 setting 来选择别的日志工具。

——《mybatis官方文档》

logPrefix

备注:指定 MyBatis 增加到日志名称的前缀
默认值:未设置
建议值:不设置
建议原因:此设置后会影响日志系统的默认行为,因此不建议设置,如有必要设置名称前缀,可以在日志配置文件中设置日志规则

配置log4j2日志系统

Log4j的详细配置项见

配置步骤

  1. 引入log4j2
  2. 新增log4j2配置文件,文件路径 resources/log4j2.xml
  3. 修改mybatis配置(可不修改,Mybatis会自动使用对应的日志)
<!--pom文件-->
<dependency>  <groupId>org.apache.logging.log4j</groupId>  <artifactId>log4j-core</artifactId>  <version>2.21.0</version>
</dependency>
<!--日志配置文件-->
<?xml version="1.0" encoding="UTF-8"?>  
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">  <Appenders>        <Console name="stdout" target="SYSTEM_OUT">  <!--设置日志打印格式--><PatternLayout pattern="[%C#%M(%L)] %5level [%t] %msg%n"/>  </Console>    </Appenders>  <Loggers>        <!--设置日志级别--><Logger name="top.sunyog.mybatis.mapper" level="debug"/>  <Logger name="org.apache.ibatis.session.AutoMappingUnknownColumnBehavior" level="warn"/>  <Root level="error" >  <AppenderRef ref="stdout"/>  </Root>    </Loggers>  
</Configuration>
<!--mybatis配置-->
<setting name="logImpl" value="log4j"/>

测试log4j2日志系统的打印

[org.apache.ibatis.logging.jdbc.BaseJdbcLogger#debug(137)] DEBUG [main] ==>  Preparing: select * from test_demo
[org.apache.ibatis.logging.jdbc.BaseJdbcLogger#debug(137)] DEBUG [main] ==> Parameters: 
TestDemo{demoId=1, demoName='测试名称', demoDesc='测试备注'}

配置logback日志系统

Mybatis的日志中默认不支持logback日志,但是logback实现了slf4j标准,而Mybatis支持slf4j日志,因此logback日志也能够使用
logback日志的配置方式如下

  1. 引入logback
  2. 新增logback日志配置文件,配置文件路径 resources/logback.xml
  3. 修改mybatis配置(可不修改,Mybatis会自动使用对应的日志)
<dependency>  <groupId>ch.qos.logback</groupId>  <artifactId>logback-classic</artifactId>  <version>1.0.13</version>  
</dependency>
<?xml version="1.0" encoding="UTF-8" ?>  
<configuration debug="false">  <!-- 日志输出格式 -->  <property name="ENCODER_PATTERN" value="%yellow(%d{yyyy-MM-dd  HH:mm:ss.SSS}) %red([%thread] %-5level %logger{80}) - %green(%msg%n)" />  <!-- 控制台日志:输出全部日志到控制台 -->  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  <Pattern>${ENCODER_PATTERN}</Pattern>  <charset>UTF-8</charset>  </encoder>    </appender>  <logger name="top.sunyog.mybatis.mapper" level="DEBUG" addtivity="false"></logger>  <root level="error">  <appender-ref ref="STDOUT" />  </root>
</configuration>

测试logback日志系统的打印

2023-12-28  14:51:24.037 [main] DEBUG top.sunyog.mybatis.mapper.LessonMapper.getDemos - ==>  Preparing: select * from test_demo
2023-12-28  14:51:24.063 [main] DEBUG top.sunyog.mybatis.mapper.LessonMapper.getDemos - ==> Parameters: 
TestDemo{demoId=1, demoName='测试名称', demoDesc='测试备注'}

注意事项:如果在Mybatis项目中存在多个日志系统,mybatis会自动在其中选择一个,如果需要修改为其他的日志系统,那么logImpl这个配置就很有用了,它可以指定具体使用哪一个日志系统,对于logback和log4j2的配置如下

<!--logback日志系统使用以下配置-->
<setting name="logImpl" value="slf4j"/><!--log4j2日志系统使用以下配置-->
<setting name="logImpl" value="log4j2"/>

总结

Mybatis的日志相关的代码都在 org.apache.ibatis.logging.*这个包下,其中定义了很多日志的行为,因此配置完日志系统后不需要对Mybatis进行任何修改即可产生相应的日志内容。虽然框架提供的功能很强大,但还是有一些细节需要注意,比如

  1. Mybatis支持log4j和log4j2,但没有logback的支持,需要通过slf4j间接使用logback
  2. 当mybatis项目中存在多个日志系统时,可以通过配置修改Mybatis默认使用的日志系统

📩 联系方式
邮箱:qijilaoli@foxmail.com

❗版权声明
本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问奇迹老李的博客首页

http://www.lryc.cn/news/269705.html

相关文章:

  • Java设计模式-外观模式
  • js+css实现颜色选择器
  • Go语言中的包管理工具之Go Modules的使用
  • 【c/c++】指针例图基础详解
  • TCP/IP的网络层(即IP层)之IP地址和网络掩码,在视频监控系统中的配置和应用
  • 代码随想录刷题 | Day1
  • 查看IOS游戏FPS
  • 挑战Python100题(7)
  • HarmonyOS自学-Day4(TodoList案例)
  • LTPI协议的理解——2、LTPI实现的底层架构
  • CentOS 8.2 安装 Mysql 5.7.26(单机)
  • Vue Tinymce富文本组件自定义带下拉框的操作按钮
  • YOLOv5算法进阶改进(10)— 更换主干网络之MobileViTv3 | 轻量化Backbone
  • Java UDP
  • Halcon阈值处理的几种分割方法threshold/auto_threshold/binary_threshold/dyn_threshold
  • FB混合C语言编译
  • 【机器学习】深度学习概论(二)
  • 词法语法语义分析程序设计及实现,包含出错提示和错误恢复
  • Linux的capability深入分析
  • 【自然语言处理】类似GPT的模型
  • 【Unity】【FBX】如何将FBX模型导入Unity
  • 腾讯云标准型S5服务器4核8G配置优惠价格表
  • 学习笔记:R语言基础
  • 初识智慧城市
  • Zookeeper之手写一个分布式锁
  • 【音视频 ffmpeg 学习】 RTMP推流 mp4文件
  • 跨进程通信 macOS XPC 创建实例
  • Python圣诞树代码
  • flask之文件管理系统-项目 JRP上线啦!!! ---修订版,兼容Windows和Linux系统
  • 希尔排序:排序算法中的调优大师