app开发者平台在数字化时代的重要性与发展趋势解析
1491
2022-12-28
解决springmvc整合Mybatis的Log4j日志输出问题
springmvc整合Mybatis的Log4j日LDJLq志输出
当我们进行web开发的时候总是看到配置的log4j日志在控制台无法显示mybatis的主要是指sql、参数、结果,出现这种问题有两种情况:
第一种情况
下面文档描述的mybatis本身内置很多种日志框架使用,所以如果我们要用具体哪个日志框架,就需要进行相应mybatis配置,或者就是按照mybatis本身规则运行。
问题在这里文档:http://mybatis.github.io/mybatis-3/zh/logging.html
配置方式:新增文件,有就直接添加mybatis-config.xml
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内置的日志工厂提供日志功能,具体的日志实现有http://以下几种工具:
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(配置)来选择一个不同的日志实现。
Log4j实现日志输出功能
一、为什么要配置mybtis的logger?
mybatis自己设计以及实现了org.apache.ibatis.logging.Log接口。
Mybatis为了避免对第三方的日志包存在强依赖,内部的Log采用了代理模式。通过配置的方式,代理真实的日志对象. 如果没有配置log,mybatis会按照以下顺序尝试加载日志输出类:
SLF4J
Apache Commons Logging
Log4j 2
Log4j
JDK logging
no logging(没有日志)
二、如何开启日志输出?
2.1 -log4j的jar包并导入到build path下
2.2 开启日志输出的配置
在config.xml文件中的settings元素中配置日志实现类。
2.3 编写一个文件:log4j.properties放在类路径下面
第一行表示日志输出的级别的debug级别,Console表示输出位置是控制台(可以输出到文件或数据库,可以是发邮件)。
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
2.4 log4j的日志输出的级别:
DEBUG < INFO < WARN < DEBUG :流经系统的详细信息。最低级别的日志输出,一般用于开发阶段的调试。 INFO :一般消息输出(启动、关闭) WARN :警告输出 ERROR :错误输出 FATAL :导致应用程序提前终止的严重错误。一般这些信息将立即呈现在状态控制台上。 查看日志输出 debug基本的输出可以清楚地看到连接数据库的详细信息。
DEBUG :流经系统的详细信息。最低级别的日志输出,一般用于开发阶段的调试。
INFO :一般消息输出(启动、关闭)
WARN :警告输出
ERROR :错误输出
FATAL :导致应用程序提前终止的严重错误。一般这些信息将立即呈现在状态控制台上。
查看日志输出
debug基本的输出可以清楚地看到连接数据库的详细信息。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~