前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis打印sql

mybatis打印sql

作者头像
一笠风雨任生平
发布2019-08-02 11:29:09
1.7K0
发布2019-08-02 11:29:09
举报
文章被收录于专栏:服务化进程服务化进程

我们在使用mybatis开发过程中,经常需要打印sql以及输入输出,下面说一下mybatis结合log4j打印sql的。

1、添加mybatis配置

mybatis的日志打印方式比较多,SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根据自己的需要进行配置。

建议在mybatis.xml中添加如下配置,因为有些web容器(websphere、jboss等)中自带私有日志,如果我们不配置mybatis默认会使用容器私有日志组件,而不是使用log4j

代码语言:javascript
复制
<settings>
		<setting name="logImpl" value="LOG4J"/>
</settings>

2、log4j.xml配置

mybatis日志打印sql,由于我们用的是mybatis3.3,高于mybatis3.2

所以如果需要打印查询sql、参数和结果,则配置如下:

代码语言:javascript
复制
<logger name="com.example.mapper" additivity="false">
		<level value="DEBUG" />
		<appender-ref ref="SQL_DEBUG" />
		<appender-ref ref="SQL_INFO" />
		<appender-ref ref="SQL_ERROR" />
	</logger>

其中name中填写的是mapper中的namespace路径:预约模块的都是com.example.mapper

如果mybatis低于3.2则配置才会需要添加下面的配置

代码语言:javascript
复制
<logger name="com.ibatis" additivity="true"> 
        <level value="DEBUG" /> 
        <appender-ref ref="STDOUT" />
	<appender-ref ref="DEBUG" />
</logger> 
<logger name="java.sql" additivity="true"> 
        <level value="DEBUG" /> 
        <appender-ref ref="STDOUT" />
	<appender-ref ref="DEBUG" />
</logger>

3、如果需要将sql单独打印,则添加如下配置

代码语言:javascript
复制
<appender name="SQL_DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="log/sql/debug.log" />
		<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%-5p] [%d{yyyy-MM-dd HH:mm:ss}] %l - %m%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>

4、建议日志additivity属性配置为false,这样可以避免日志重复打印,

当然这也需要看情况,如果需要结合上下文日志来跟踪问题,可以设置为true。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档