当前位置:   article > 正文

【Mybatis】日志_mybatis日志

mybatis日志

Mybatis 通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给下面的实现之一:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j
  • JDK logging

MyBatis 内置日志工厂会基于运行时检测信息选择日志委托实现。它会(按上面罗列的顺序)使用第一个查找到的实现。当没有找到这些实现时,将会禁用日志功能。

不少应用服务器(如 Tomcat 和 WebShpere)的类路径中已经包含 Commons Logging。注意,在这种配置环境下,MyBatis 会把 Commons Logging 作为日志工具。这就意味着在诸如 WebSphere 的环境中,由于提供了 Commons Logging 的私有实现,你的 Log4J 配置将被忽略。这个时候你就会感觉很郁闷:看起来 MyBatis 将你的 Log4J 配置忽略掉了(其实是因为在这种配置环境下,MyBatis 使用了 Commons Logging 作为日志实现)。如果你的应用部署在一个类路径已经包含 Commons Logging 的环境中,而你又想使用其它日志实现,你可以通过在 MyBatis 配置文件 mybatis-config.xml 里面添加一项 setting 来选择其它日志实现。

  1. <configuration>
  2. <settings>
  3. ...
  4. <setting name="logImpl" value="LOG4J"/>
  5. ...
  6. </settings>
  7. </configuration>

可选的值有:

  • SLF4J、
  • LOG4J、
  • LOG4J2、
  • JDK_LOGGING、
  • COMMONS_LOGGING、
  • STDOUT_LOGGING、
  • NO_LOGGING,

或者是实现了 org.apache.ibatis.logging.Log 接口,且构造方法以字符串为参数的类完全限定名。

实例

(1)在mybatis-config.xml文件中插入:

  1. <settings>
  2. <setting name="logImpl" value="STDOUT_LOGGING"/>
  3. </settings>

【注】:在<configuration>中,元素必须按照以下顺序出现在configuration中 (properties, settings, typeAliases, typeHandlers, objectFactory, objectWrapperFactory, reflectorFactory, plugins, environments, databaseIdProvider, mappers)。

(2)执行【Mybatis】动态SQL 实例中的getVisibleBlogListByLabelAndTitle():

  1. @Test
  2. public void getVisibleBlogListByLabelAndTitle(){
  3. SqlSession sqlSession = MybatisUtils.getSqlSession();
  4. BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
  5. Map<String, Object> map = new HashMap<String, Object>();
  6. map.put("label", "Spring");
  7. map.put("title", "%AOP%");
  8. List<Blog> blogs = mapper.getBlogListByLabelAndTitle(map);
  9. for (Blog blog : blogs) {
  10. System.out.println(blog);
  11. }
  12. sqlSession.close();
  13. }

输出结果为:

  1. Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
  2. PooledDataSource forcefully closed/removed all connections.
  3. PooledDataSource forcefully closed/removed all connections.
  4. PooledDataSource forcefully closed/removed all connections.
  5. PooledDataSource forcefully closed/removed all connections.
  6. Opening JDBC Connection
  7. Created connection 594651850.
  8. Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
  9. ==> Preparing: select * from blog where label = ? AND title like ?
  10. ==> Parameters: Spring(String), %AOP%(String)
  11. <== Columns: id, title, author, _time, read_count, label, _like, visible
  12. <== Row: 117374430, 【Spring】AOP(一)使用Spring的API接口, 牧心., 2021-05-30 19:00:46, 228, Spring, 1, 1
  13. <== Row: 118054659, 【Spring】AOP(二)自定义来实现AOP, 牧心., 2021-06-19 15:50:23, 192, Spring, 1, 1
  14. <== Row: 118058442, 【Spring】AOP(三)注解实现AOP, 牧心., 2021-06-19 20:06:54, 203, Spring, 1, 1
  15. <== Total: 3
  16. Blog{id=117374430, title='【Spring】AOP(一)使用Spring的API接口', author='牧心.', time='null', read_count=228, label='Spring', like=0, visible=1}
  17. Blog{id=118054659, title='【Spring】AOP(二)自定义来实现AOP', author='牧心.', time='null', read_count=192, label='Spring', like=0, visible=1}
  18. Blog{id=118058442, title='【Spring】AOP(三)注解实现AOP', author='牧心.', time='null', read_count=203, label='Spring', like=0, visible=1}
  19. Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
  20. Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@2371aaca]
  21. Returned connection 594651850 to pool.
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/599950
推荐阅读
相关标签
  

闽ICP备14008679号