如何在MyBatis-3.2.7中使用Log4j2 rc2——MyBatis学习笔记之十九

简介:

      前天我上传了我的MyBatis系列课程(http://edu.51cto.com/course/course_id-1110.html)的第六讲,主要内容是如何使用Log4j2(具体版本为v2.0-rc1)为MyBatis 3.2.7配置日志。实际上目前最新的版本是刚刚发布的v2.0-rc2,我也尝试过在MyBatis 3.2.7中使用它,但却报出以下错误:

      java.lang.ClassNotFoundException: org.apache.logging.log4j.spi.AbstractLoggerWrapper。

      用好压打开文件log4j-api-2.0-rc2.jar查看,果然没有类AbstractLoggerWrapper。遂到其官方网站报告了此问题(https://issues.apache.org/jira/browse/LOG4J2#selectedTab=com.atlassian.jira.jira-projects-plugin:issues-panel),问题编号LOG4J2-700。不久有人回复我,AbstractLoggerWrapper在rc2中已改名为ExtendedLoggerWrapper。用好压打开log4j-api-2.0-rc2.jar,可以看到类ExtendedLoggerWrapper(所在的包不变)。

      接着,在他的提示下,通过查阅MyBatis和Log4j2的官方文档(MyBatis:http://mybatis.github.io/mybatis-3/logging.html,Log4j2:http://logging.apache.org/log4j/2.x/faq.html),我找到了一种可以在MyBatis 3.2.7下使用Log4j2 rc2的方法,原理是指定MyBatis 3.2.7调用SLF4J的API,但通过SLF4J Binding,把具体的日志调用导向Log4j2,如下图红框所示:

wKioL1O9TFOTvOh2AAFm7d4zohs295.jpg

  (图片来源:http://logging.apache.org/log4j/2.x/faq.html

      具体步骤如下:

      1、在MyBatis的主配置文件中指定使用SLF4J,即在settings元素中添加如下配置:

1
< setting  name = "logImpl"  value = "SLF4J" />

      2、在SLF4J的官方网站(http://www.slf4j.org)下载slf4j-1.7.7,把其中的slf4j-api-1.7.7.jar添加到工程中;

      3、把Log4j2 rc2提供的log4j-slf4j-impl-2.0-rc2.jar文件添加到工程中。

      当然,要想使用Log4j2 rc2的话,log4j-api-2.0-rc2.jar和log4j-core-2.0-rc2.jar这两个文件是必须要添加到工程中的。

      此外,根据上图介绍,也可以用类似的方法,先指定MyBatis 3.2.7使用Commons Logging API,然后通过Commons Logging Bridge,把最终的日志调用导向Log4j2,如下图红框所示:

 

wKiom1O9TSXQUNkmAAFlGABtW60163.jpg

(图片来源:http://logging.apache.org/log4j/2.x/faq.html

      具体步骤如下:

      1、在MyBatis的主配置文件中指定使用Commons Logging,即把如上的setting配置修改如下:

1
< setting  name = "logImpl"  value = "COMMONS_LOGGING" />

      2、工程中本身就有commons-logging-1.1.1.jar文件;

      3、把Log4j2 rc2提供的Commons Logging Bridge,即log4j-jcl-2.0-rc2.jar添加到工程中。

      回到上文帮助我的那个人,他又到MyBatis issue tracker上提交了此问题(编号235):https://github.com/mybatis/mybatis-3/issues/235。如你所见,此问题在他之前已被提出(问题编号刚好是234),并被解决。解决的方法在这里:https://github.com/mybatis/mybatis-3/commit/28c6f04f63e7fdb6eb7a0ffaf789dc4c157e10c0

      上上官网还是有好处的哦。










本文转自 NashMaster2011 51CTO博客,原文链接:http://blog.51cto.com/legend2011/1436480,如需转载请自行联系原作者
目录
相关文章
|
SQL IDE Java
IDEA控制台如何查看格式化的SQL(MyBatis Log插件)
IDEA控制台如何查看格式化的SQL(MyBatis Log插件)
2737 0
|
SQL Java 数据库连接
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
【1月更文挑战第2天】 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
444 3
Mybatis之Mybatis简介、搭建Mybatis相关步骤(开发环境、maven、核心配置文件、mapper接口、映射文件、junit测试、log4j日志)
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
1356 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
SQL 监控 Java
IDEA插件-Mybatis Log Free日志替换
MyBatis Log Free 是一个免费的用于在 IntelliJ IDEA 中显示 MyBatis 日志的插件。它可以帮助您更方便地查看和分析 MyBatis 的 SQL 执行情况,以及定位潜在的性能问题,提高开发效率。
1295 0
IDEA插件-Mybatis Log Free日志替换
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
142 1
|
SQL Java 数据库连接
IDEA插件(MyBatis Log Free)
IDEA插件(MyBatis Log Free)
1204 0
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
1078 0
|
C++ 索引
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
【Qt 学习笔记】如何在Qt中打印日志 | qDebug的使用 | Assistant的使用
2053 0