MyBatisPlus 日志的两个坑:生产环境不打日志多数据源日志配置等
Posted 毕小宝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatisPlus 日志的两个坑:生产环境不打日志多数据源日志配置等相关的知识,希望对你有一定的参考价值。
背景
MyBatis 日志打印踩过三次坑,本文总结这三个问题。
- 生产环境下怎么打印 MyBatis 日志。
- 多数据源时,配置 mybatis-plus 日志不生效问题。
- mybatis-plus 的 log-impl 属性值。
mybatis-plus 的 log-impl 属性值
org.apache.ibatis.logging.stdout.StdOutImpl
可以打印控制台日志,如果要输出 DAO 类的 debug
级别的日志,可以配置:
logging:
level:
com.xx.xx.*.dao: debug
生产环境下,需要配置成另一个类:
mybatis-plus:
configuration:
# 开启驼峰命名规则自动转换
map-underscore-to-camel-case: true
# 日志打印
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
需要注意的是,这两个日志实现类的路径不相同,今天犯了一个低级错误,配置生产文件时,直接拷贝了最后一个类名称,导致日志配置错误,程序启动失败。
多数据源失效问题
多数据源时,默认的 mybatis-plus 配置不生效,需要单独对对应的数据源配置:
// 注入 MyBatisPlus 的配置属性
@Bean
@ConfigurationProperties(prefix = "mybatis-plus.configuration")
public MybatisConfiguration globalConfiguration()
return new MybatisConfiguration();
// 特定的数据源
@Bean(name = "myDataSource")
@ConfigurationProperties(prefix = "spring.datasource.myDataSource")
public DataSource testDataSource()
return DataSourceBuilder.create().build();
// 数据源作用的会话工厂对象
@Bean(name = "mysqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("myDataSource") DataSource dataSource, MybatisConfiguration config) throws Exception
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setPlugins(new Interceptor[]paginationInterceptor);
// 当前数据源作用的 Mapper 的配置信息
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:xxx/*.xml"));
// 设置当前数据源的配置
bean.setConfiguration(config);
return bean.getObject();
启示录
mybatis-plus 的 log-impl 属性值,必须保证实现类的全称的正确,谨以此文总结今天遇到的低级错误。
以上是关于MyBatisPlus 日志的两个坑:生产环境不打日志多数据源日志配置等的主要内容,如果未能解决你的问题,请参考以下文章