springmvc整合Mybatis的Log4j日志输出问题

作者 : 开心源码 本文共1462个字,预计阅读时间需要4分钟 发布时间: 2022-05-11 共164人阅读

当我们进行web开发的时候总是看到配置的log4j日志在控制台无法显示mybatis的主要是指sql、参数、结果,出现这种问题有两种情况:

第一种情况,下面文档形容的mybatis本身内置很多种日志框架用,所以假如我们要使用具体哪个日志框架,就需要进行相应mybatis配置,或者者就是按照mybatis本身规则运行。

问题在这里文档:http://mybatis.github.io/mybatis-3/zh/logging.html

配置方式:新添加文件,有就直接增加mybatis-config.xml

<!DOCTYPE configuration

PUBLIC “-//mybatis.org//DTD Config 3.0//EN”

“http://mybatis.org/dtd/mybatis-3-config.dtd”>

再把这个文件增加到:

这样就配置好了,用log4j进行日志记录不会运行mybatis自身规则。

第二种情况,就是log4j的日志级别用错误,导致mybatis信息打印不出来;

日志级别

每个Logger都被了一个日志级别(log level),使用来控制日志信息的输出。日志级别从高到低分为:

A:off 最高等级,使用于关闭所有日志记录。

B:fatal 指出每个严重的错误事件将会导致应使用程序的退出。

C:error 指出尽管发生错误事件,但依然不影响系统的继续运行。

D:warm 表明会出现潜在的错误情形。

E:info 一般和在粗粒度级别上,强调应使用程序的运行全程。

F:debug 一般使用于细粒度级别上,对调试应使用程序非常有帮助。

G:all 最低等级,使用于打开所有日志记录。

上面这些级别是定义在org.apache.log4j.Level类中。Log4j只建议用4个级别,优先级从高到低分别是error,warn,info和debug。通过用日志级别,可以控制应使用程序中相应级别日志信息的输出。例如,假如用b了info级别,则应使用程序中所有低于info级别的日志信息(如debug)将不会被打印出来。

根据上面的log4j的说明,另外根据mybatis的细粒度得出,mybatis要把log4j的日志至少配置到DEBUG级别,才能显示出sql日志,如下:

log4j.logger.com.demo.user=DEBUG

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(配置)来选择一个不同的日志实现。

springmvc整合Mybatis的Log4j日志输出问题

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » springmvc整合Mybatis的Log4j日志输出问题

发表回复