Mybatis最入门---日志配置

django如何添加logging日志模块--配置多个日志文件 我用的django的版本是1.3,听闻django可以配置日志模块,不用自己单独写,于是一阵狂搜加看官方文档解决了我的需求。 我的需求是需要配置多个日志文件,网上搜出来大部分是一个的,所以给大家一个我的例子做参考。 1.在setting.py里面配置如下:   # more details on how to customize your logging configuration. L 阅读详情

[一步是咫尺,一步即天涯]

对于以往的开发过程,我们会经常使用到debug模式来调节,跟踪我们的代码执行过程。但是现在使用Mybatis是基于接口,配置文件的源代码执行过程。因此,我们必须选择日志工具来作为我们开发,调节程序的工具。

--------------------------------------------------------------------------------------------------------------------------------------------------------

正文开始:

Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。

不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。 这种做法不免让人悲催,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在了,按照优先级顺序,Log4J自然就被忽略了!不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以通过在MyBatis的配置文件mybatis-config.xml里面添加一项setting(配置)来选择一个不同的日志实现。

<configuration>
  <settings>
    ...
    <setting name="logImpl" value="LOG4J"/>
    ...
  </settings>
</configuration>
logImpl可选的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING 或者是实现了接口org.apache.ibatis.logging.Log的类的完全限定类名, 并且这个类的构造函数需要是以一个字符串(String类型)为参数的。 (可以参考org.apache.ibatis.logging.slf4j.Slf4jImpl.java的实现)

org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging();
如果的确需要调用以上的某个方法,请在其他所有MyBatis方法之前调用它。另外,只有在相应日志实现中存在 的前提下,调用对应的方法才是有意义的,否则MyBatis一概忽略。如环境中并不存在Log4J,却调用了 相应的方法,MyBatis就会忽略这一调用,代之默认的查找顺序查找日志实现。

-------------------------------------------------------------------------------------------------------------------------------------
我们以前文HelloWorld工程为例,说明Log4j的使用方法

1.创建log4j.properties文件,具体内容如下:

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.在pom文件中加入log4j依赖,如下:

<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>
3.在main类中,加入log引用,如下:

package com.csdn.ingo.main;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;

import com.csdn.ingo.dao.UserDao;
import com.csdn.ingo.entity.User;
import com.csdn.ingo.util.SqlSessionFactoryUtil;

public class main {
	private static Logger log = Logger.getLogger(main.class);
	public static void main(String[] args) {
		SqlSession sqlSession=SqlSessionFactoryUtil.openSession();
		UserDao userDao = sqlSession.getMapper(UserDao.class);
		String id = "admin";
		User curUser = userDao.findUserById(id);
		if(curUser!=null){
			log.info("HelloWorld:"+curUser.getId());
//			System.out.println("HelloWorld:"+curUser.getId());
		}
	}
}
4.重新运行main方法,观察控制台输出即可。

各位看官可能要问了,为什么没有配置Setting呢?

其实,如果仔细阅读上文,就会发现Mybatis是按照顺序加载日志组件。本例中,我们只使用了LOG4J,因此Mybatis自动使用了LOG4J。但是如果存在多个日志时,我们就需要进行配置Setting,示例代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="jdbc.properties"/>
	<settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings>
	<typeAliases>
		<typeAlias alias="User" type="com.csdn.ingo.entity.User"/>
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="mappers/UserMapper.xml" />
	</mappers>
	
</configuration>

对于这份配置文件,请读者一定按照此配置顺序进行配置。虽然没有明确的官方说明,但是如果配置项的顺序出错,将会抛入如下错误,请读者特别注意:



除了基本的使用方法之外,也可以将日志从整个mapper接口级别调整到到语句级别,从而实现更细粒度的控制。如下配置只记录 select 语句的日志:【注意,此时的日志级别请设置为高于debug,这样才能看出配置后的效果】

log4j.logger.com.csdn.ingo.dao.UserDao.findUserById=TRACE

与此相对,可以对一组mapper接口记录日志,只要对mapper接口所在的包开启日志功能即可:

log4j.logger.com.csdn.ingo=TRACE

某些查询可能会返回大量的数据,只想记录其执行的SQL语句该怎么办?为此,Mybatis中SQL语 句的日志级别被设为DEBUG(JDK Logging中为FINE),结果日志的级别为TRACE(JDK Logging中为FINER)。所以,只要将日志级别调整为DEBUG即可达到目的:

log4j.logger.com.csdn.ingo=DEBUG


要记录日志的是mapper文件而不是mapper接口又该怎么呢?


log4j.logger.com.csdn.ingo.dao.UserDao=TRACE


日志的配置到此结束,更多内容请参考对应日志的官方文档进行配置

-------------------------------------------------------------------------------------------------------------------------------------
至此,Mybatis最入门---日志配置结束


参考资料

官方文档:http://www.mybatis.org/mybatis-3/



衡山派Luban-Lite系统SDIO无线网络配置实战:以D133CBV-QFN88开发板与RTL8189模组为例 本文详细介绍了在衡山派D133CBV-QFN88开发板上,为Luban-Lite系统配置SDIO无线网络的完整实战流程。通过配置SDMC接口、RTL8189 Wi-Fi驱动、lwIP协议栈及内核参数,并解决编译分区问题,最终实现Wi-Fi网络连接与测试,为嵌入式设备联网提供清晰指导。 阅读详情

相关推荐

从零复刻平衡小车(基于STM32F1)

平衡小车(基于STM32F1)

Legendyyy的博客 5040

Mybatis实用操作

本文主要记录基于注解的开发方式 一、查询 一:参数为集合类型时的查询 需求:求id为1和2所对应的price之和 表数据如下(表名为lb_option): 在Navicat中直接运行sql语句: select sum(price) from lb_option where id in (1,2) 结果正确: 同样的操作在项目中用mybatis执行 格式如下: @Select({ "<script>", "select sum(pric

qq_41725131的博客 4765

旅行青蛙破解汉化教程——蹭个热度

汉化破解版资源(无尽三叶草与点券): https://github.com/wisdombyzf/lxqw/blob/master/lxqw_zf.apk 截图: 破解方法: 工具: 1,APKIDE https://www.pd521.com/thread-818-1-2.html 2,dnspy https://down.52pojie.

github_38838414的博客 3785

MyBatis-03

日志实现,分页实现, 注解开发,MyBatis执行流程,通过注解实现增删改查,LomBok使用,

legend_go的博客 1026

京东礼品卡绑定技术解析与安全验证实践

电商系统开发中,卡券绑定是常见的业务场景,其核心在于安全验证机制的设计与实现。从技术原理来看,现代验证系统通常采用多层防护,包括前端数据加密、行为验证(如滑块验证)和风控校验等关键技术。这些机制通过设备指纹采集、请求签名验证等方式,有效防范自动化攻击。在实际工程实践中,开发者需要特别关注接口鉴权流程,正确处理安全令牌(如st/vt令牌)和请求签名。京东礼品卡绑定作为典型案例,展示了如何平衡用户体验与系统安全,其验证系统会持续升级,需要开发者跟踪接口变化。对于企业级应用,建议采用混合模式技术方案,结合浏览器自

weixin_28607671的博客 234

UniTouch:多模态触觉对齐技术如何重塑零样本跨模态应用

UniTouch模型通过创新的多模态触觉对齐技术,成功将触觉数据映射到通用的视觉-语言嵌入空间,解决了触觉模态的“孤岛困境”。该技术利用对比学习和传感器特定标记,实现了高质量的零样本学习能力,使模型无需额外训练即可完成触觉分类、描述等任务,并能驱动跨模态生成,为机器人、VR和智能制造等领域提供了强大的触觉理解新范式。

weixin_29044713的博客 409

mybatis中yml配置log-impl是什么?有什么用?

mybatis中yml配置log-impl是什么?有什么用?

m0_51577196的博客 3051

小红书x-mini签名逆向实战:Frida动态Hook与算法还原

在移动App协议分析中,请求签名机制是保障接口安全的核心技术,其本质是客户端对请求参数、时间戳、设备指纹等要素进行加密认证的过程。理解签名原理需掌握Native层加密流程、JNI调用机制及密钥动态派生逻辑。Frida作为主流动态插桩工具,能绕过符号剥离、字符串加密和控制流混淆等反分析手段,在函数执行瞬间捕获寄存器状态、内存数据与调用上下文,实现签名算法的完整还原。该技术广泛应用于合规内容监测、API自动化调用与竞品协议研究等工程场景。本文聚焦小红书x-mini签名这一典型样本,详解从JNI_OnLoad定位

weixin_31264565的博客 457

mybatis自定义日志实现

网上挺多文章是通过mybatis的拦截器来实现的,但是测试发现,sql条数如果过多的话,相比于mybatis原生的输出方式,通过拦截器方式输出日志会对性能有影响。当然,因为mybatis原生的输出级别是debug,在有些情况下可能不适用(比如有的系统只保存INFO、ERROR级别的日志,但又想要保留SQL日志方便排查问题),所以这里通过自定义日志来达到不通过拦截器且能输出日志的目的。

星月昭铭的博客 2261

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2592

【DRAM存储器六十四】DDR5介绍--preamble、postamble、interamble、刷新、power down、MPSM

简述DDR5 reamble、postamble、interamble、刷新、power down、MPSM的功能定义

highman110的博客 337

MyBatis实战指南(八)MyBatis日志

《MyBatis日志实战指南》详细解析了MyBatis日志系统的核心功能与配置方法。文章首先阐述了日志在开发、调试和生产环境中的关键作用,特别是SQL语句追踪和问题定位的价值。接着对比了SLF4J、Log4j、Log4j2等主流日志框架的优缺点,并提供了SLF4J+Logback的完整集成指南(含Maven依赖、配置文件和日志级别设置)。针对不同开发场景,文章还讲解了MyBatis原生配置与Spring Boot环境下日志的特殊配置方式。最后,从源码层面剖析了Log接口、LogFactory等核心组件的工作

2402_83322742的博客 2633

RT-DETR改进策略【RT-DETR和Mamba】| 替换骨干 Mamba-RT-DETR-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 1322

Spring Mybatis log4j日志配置详解

SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commo

AI时代光年 1535

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MyBatis(三)——Mybatis日志配置与打印

前言 我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率? 如果一个数据库相关的操作出现了问题,我们可以根据输出的SQL语句快速排查问题。 对于以往的开发过程,我们会经常使用到debug模式来调节,跟踪我们的代码执行过程。但是现在使用Mybatis是基于接口,配置文件的源代码执行过程。因此,我们必须选择日志工具来作为我们开发,调节程序的工具。 Mybatis 通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给下面的实现之一: SLF4J Apac

云中、漫步的博客 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

30. MyBatis如何实现日志记录?如何配置不同级别的日志输出?

通过这些日志框架,MyBatis能够记录SQL语句的执行情况、参数、结果集以及执行的时间等信息。通过调整日志级别,可以控制MyBatis输出的日志信息的详细程度,帮助开发者在开发、调试和生产环境中有效地监控和排查问题。:最详细的日志级别,记录MyBatis执行的每一个步骤,包括所有SQL语句的执行、参数绑定和结果集处理。通过调整日志配置文件中的日志级别,可以控制MyBatis以及应用程序的其他部分输出不同级别的日志。MyBatis支持多种日志框架,通过引入不同的日志框架依赖,可以选择所需要的日志实现方式。

zhzjn的博客 2588

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MyBatis 从入门到精通:MyBatis日志记录

日志工厂是一个重要的组件,它负责将系统中的日志信息输出到指定的目的地,如控制台、文件等。在 MyBatis 中,我们可以通过配置日志工厂来实现日志记录功能。Log4j是Apache的一个开源项目,通过使用Log4j,我们可以更加灵活地控制日志信息的输出目的地和格式。首先,导入Log4j的包依赖。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 1035

用mybatis日志如何配置?进来我教你!!!

《心有猛虎,细嗅蔷薇》Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理:SLF4JApache Commons LoggingLog4j 2Log4jJDK logging     (上图文件下载地址:https://download.youkuaiyun.com/download/qq_39693164/10296609)MyBatis 内置日志工厂基于运行时自省机制...

白瞳洛的博客 1万+

Mybatis日志配置(slf4j、log4j、log4j2)

本文详细的介绍了mybatis日志的相关配置,包括日志门面与日志实面!!!

一个很懒的人 1万+

MyBatis集成日志框架Logback:从入门到精通

通过本文的介绍,你应该已经掌握了如何在MyBatis中集成日志框架Logback。从添加依赖、配置Logback和MyBatis,到运行程序和高级配置,每一步都清晰明了。希望这篇文章能帮助你更好地理解和使用MyBatis和Logback,让你的Java开发之旅更加顺畅!

xycxycooo的博客 1735

Mybatis日志配置

1.日志 1. 1什么是日志? 生活中的日志是记录你生活的点点滴滴,让它把你内心的世界表露出来,更好的诠释自己的内心世界,而电脑里的日志可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。 通俗的说日志就是在程序运行的是时候会自动记录什么时间发生什么操作,执行哪条语句,比如我们知道在tomcat服务器启动的时候控制台输出一些信息,其实这就是日志,里面包含了容器初始化时日期,环境变量,版本信息等等... 1.2为什么需要日志 日...

qq_45698467的博客 2064

Mybatis行为配置之Ⅳ—日志

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

qq_43408971的博客 1463

mybatis 日志配置

查看mybatis的说明文档,mybatis的日志支持以下几种模式 如需指定,具体配置如下: &lt;settings&gt; &lt;setting name="logImpl" value="STDOUT_LOGGING"/&gt; &lt;/settings&gt; 当我们配置logImpl时,mybatis日志加载会按照我们指定的去加载。到底是如何加载的,我们看具体代码...

baidu_38558076的博客 2192

MyBatis打印SQL日志的配置

MyBatis打印sql日志配置

zrhsmile的博客 2941
上一篇: Mybatis最入门---Mapper文件配置详解(下)
下一篇: Mybatis最入门---基本增改删查(CRUD)
y-yg
博客等级 码龄15年 401粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值