当前位置:首页 » 编程语言 » mybatislog4j打印sql

mybatislog4j打印sql

发布时间: 2025-02-28 22:25:31

A. 怎样使log4j打印sql语句的时候不打印activity工作流SQL语句

1、log4j配置[html]viewplainlog4j.logger.com.ibatis=DEBUGlog4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUGlog4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUGlog4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUGlog4j.logger.org.mybatis=DEBUGlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUG2、导入jar[html]viewplainlog4jlog4j1.2.14org.slf4jslf4j-api1.7.7org.slf4jslf4j-log4j121.7.73、没了,注意一定要导入slf4j的包,否则sql语句打印不出来

B. mybatis怎么打印出sql,我被误导了很多年

探讨MyBatis打印SQL语句的方法,常见答案建议将java.sql.*,com.ibatis的日志级别配置为debug以实现实现。但实际操作中发现,打印SQL与上述Java框架并无直接关联。MyBatis使用的日志对象是org.apache.ibatis.logging.slf4j.Slf4jImpl(statementLog)。日志的打印与否取决于statementLog与log4j.xml或log4j.properties中log4j.logger的匹配情况。

详细分析如下:

1. 核心在于statementLog的调试级别,决定是否打印SQL。

具体实现于org.apache.ibatis.executor.SimpleExecutor,当调用ConnectionLogger对象时,便执行打印日志的代码。

关键代码行位于org.apache.ibatis.logging.jdbc.BaseJdbcLogger的ConnectionLogger(BaseJdbcLogger).debug(String, boolean)处,位于第141行。

2. statementLog的注入来源于MappendStatement。

MappendStatement由org.apache.ibatis.session.Configuration注册。查看MappendStatement的构造过程,LogFactory.getLog(xx)这行代码是关键。

从这段代码的值来看,是否使用与java.sql、com.ibatis框架无关的日志框架。

MyBatis支持使用多种日志框架,包括slf4j或common-logger,其兼容性足够强大。

在类org.apache.ibatis.logging.LogFactory中,加载类时会执行静态代码块,尝试各种日志框架实现。若成功,则实例化logConstructor,确保即使客户端未包含特定实现,代码也不会出错。

总结而言,配置log4j.logger的值以指定的日志级别,即可实现MyBatis打印SQL语句的目的。例如,配置log4j.logger.com.helijia.search=DEBUG。

C. mybatis怎么配置log4j打印出sql语句

在程序调试时mybatis并没有hibernate所提供的showsql功能,只能通过配置log4j日志输出级别的方式来打印sql。但网上搜到的答案几乎都是下面的配置方式

log4j.rootLogger=info,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
###显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=

rootLogger的级别是info,防止其他地方输出debug的调试代码(rootLogger若设为debug了,mybatis也没必要再设置了)。但这段代码根本没有作用!不知是不是我使用的jar包版本比较新的缘故(3.4.1)。经过一系列的尝试,终于找到了解决方案,直接修改层的输出级别即可:

<loggers>
<Logger name="com.github.vita.code." level="trace" />
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>123456123456

上面的是log4j 2的XML配置,1中对应的为log4j.logger.com.github.vita.code.=trace。这儿把输出调成了更低的trace,可以看到更详细的信息。

热点内容
php办公系统 发布:2025-07-19 03:06:35 浏览:900
奥德赛买什么配置出去改装 发布:2025-07-19 02:53:18 浏览:42
请与网络管理员联系请求访问权限 发布:2025-07-19 02:37:34 浏览:189
ipad上b站缓存视频怎么下载 发布:2025-07-19 02:32:17 浏览:844
phpcgi与phpfpm 发布:2025-07-19 02:05:19 浏览:527
捷达方向机安全登录密码是多少 发布:2025-07-19 00:57:37 浏览:693
夜魔迅雷下载ftp 发布:2025-07-19 00:39:29 浏览:99
增值税票安全接入服务器地址 发布:2025-07-19 00:20:45 浏览:486
solidworkspcb服务器地址 发布:2025-07-18 22:50:35 浏览:823
怎么在堆叠交换机里配置vlan 发布:2025-07-18 22:42:35 浏览:630