MyBatis的日志

MyBatis内置日志工厂提供了日志功能,该日志工厂将日志交给下面工具代理:
1.SLF4J
2.Apache Commons Logging
3.Log4j 2
4.Log4j
5.JDK logging
其内置日志工厂基于运行时自省机制选择合适的日志工具,使用第一个查找得到的工具,如果未找到,日志功能将会禁用。很多应用服务器(如Tomcat和WebShpere)的类路径中已经包含了Commons logging,所以在这种配置环境下MyBatis将其作为日志工具,MyBatis将会忽略Log4J配置。
第一种解决这种情况的办法是在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,且构造方法是以字符串为参数的类的完全限定名

第三种方法:

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的jar包
第二步:配置Log4J,在类路径中创建名为log4j.properties 的文件:

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

该配置将记录相应mapper的详细执行操作且仅记录应用中其他类的错误信息。
1.关于具体到语句的细粒度配置如下:

log4j.logger.org.mybatis.example.BlogMapper.selectBlog=TRACE

该配置只对selectBlog语句记录日志
2.关于一组映射器接口记录日志:

log4j.logger.org.mybatis.example=TRACE

3.只记录执行的SQL语句不记录结果配置:

log4j.logger.org.mybatis.example=DEBUG

4.记录映射器文件而不记录映射器接口:

log4j.logger.org.mybatis.example.BlogMapper=TRACE

猜你喜欢

转载自blog.csdn.net/weixin_43638314/article/details/93380765