mybatis-spring日志问题

mybatis-spring整合后遇到日志不输出的问题,原因在于spring默认使用JUL,其日志级别高于mybatis所需,导致mybatis日志无法显示。需要调整日志配置以确保mybatis日志能正常输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis-spring 整合之后存在的日志问题

  • mybatis-spring 整合之后,mybatis的日志不输出,这是由于 spring 默认采用 JUL作为日志工具,而mybatis的输出日志所需的日志等级非常低,而JUL日志输出等级高,因此,mybatis整合到spring无法输出日志
/**
 * 如果要打印 mybatis 执行 sql 的 sql 语句,
 * 1.只需要在 mybatis 运行前调用 org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
 * 	{@link org.apache.ibatis.logging.LogFactory#useSlf4jLogging()}
 *
 * 2.对 SqlSessionFactory 设置 Configuration 属性,设置 log 的方式
 * 	{@link org.apache.ibatis.session.Configuration#setLogImpl(java.lang.Class)}
 * 	{@link org.mybatis.spring.SqlSessionFactoryBean#setConfiguration(org.apache.ibatis.session.Configuration)}
 *
 * 	需要注意的是,如果我们仅仅使用 mybatis + log4j/slf4j,是可以打印日志的
 * 	但,如果我们将 mybatis 和 spring 进行了整合,那么就无法打印日志了
 *
 * 	因为 mybatis 里面的 log 系统和 jcl 的结构是差不多的,
 * 		先寻找是否存在 slf4j
 * 			 是否存在 jcl
 * 		     是否存在 log4j2
 * 		     是否存在 log4j
 * 		        使用 jul
 *  因此,由于 spring5 内部重写了 jcl,因此 mybatis 会实例化出 spring5 的 jcl,从而采用 spring5 中的 jcl 作为日志工具
 *  spring5 的 jcl 默认采用 jul 作为日志工具(
 *  	这是因为 spring5 废除了 log4j,采用新一代的 log4j2,所以我们在项目如果引入 log4j,spring5 根本就无法识别,
 *  	如果我们加入 log4j2 依赖,那么 spring5 就会使用 log4j2,而不是 jul 了)
 *  这样一来,mybatis 也会使用 jul 作为日志工具,由于 ( mybatis 会实例化出 spring5 的 jcl)
 *  但是,jul 的日志级别高,jul 只会打印 INFO <以上>的级别,但,spring 和 mybatis 整合后,输入的日志所需级别是 INFO down
 *
 *	如果我们可以修改 jul 的日志级别,那么就可以实现打印,但 jul 是已经写死的,无法修改,解决办法就是 扩展 jul
 *
 *
 *
 */

spring 日志体系

/**
 *
 * spring4 采用的是 commons-logging -- log4j
 *
 * Spring5 默认使用 commons-logging(JCL) -- java.util.logging
 * 	注:spring5 虽然采用 commons-logging,但它重写了 JCL 成为一个新模块:spring-jcl 存放在 spring-framework 中
 * 	因此,spring5 虽然是 jcl,但却是自己的 jcl -> spring-jcl
 *
 * 但是,如果我们引入 log4j2 的依赖(而不是 log4j),他就会使用 log4j2 作为日志记录工具
 * 	需要注意的是,log4j2 和 log4j 是不同的
 * 	log4j2 需要引入两个依赖,分别是 log4j-core log4j-api
 * 	log4j 需要引入一个依赖,log4j
 *
 * 如果没有 log4j2 依赖,但是增加了 SLF4J_LAL 的依赖,spring 就会使用 SLF4J_LAL 来操作日志
 *
 * 如果没有 SLF4J_LAL 依赖,但是增加了 slf4j 的依赖,spring 就会使用 slf4j 来操作日志
 * 	但是 slf4j 需要借助日志记录工具(如 log4j,logback等,引入绑定器的依赖)
 *
 *
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值