当前位置:首页 » 编程语言 » log4jmybatissql

log4jmybatissql

发布时间: 2025-03-18 07:33:33

❶ 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。

❷ 如何控制Mybatis的SQL日志输出

首先要说明的是:
Mybatis是用Mapper类的全路径名,作为logger的名称的。
Mybatis中,打印SQL语句的日志级别是DEBUG,而打印SQL执行结果集的日志级别是TRACE。(因为有些SQL可能语句简单,但是结果集很多,分开级别,有利于用户控制输出。)
记住这两点,对控制Mybatis的SQL日志输出很重要。
比如,我们的应用是:
com.test.app
而mapper类所在的路径为:
com.test.app.
则我们可以分别控制应用的业务日志和SQL日志的输出。
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="DEBUG">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志,SQL语句执行结果日志
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="TRACE">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>

❸ Mybatis的SQL语句怎么没有输出到控制台

Mybatis的SQL语句怎么没有输出到控制台
在scr下添加一个log4j.properties文件,大致模版可以网络,主要是把日志级别log4j.rootLogger=debug,stdout设置为像我这样的debug,因为mybatis的sql语句的输出是debug()输出的

❹ 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,可以看到更详细的信息。

❺ 如何输出mybatis里的SQL

在MyBatis中使用log4j来输出SQL语句,需要在web.xml中配置log4j.properties文件的路径。配置文件内容如下:

log4j.rootLogger=DEBUG, Console

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

通过设置不同的日志级别,可以控制输出的详细程度:

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

如果希望减少输出量,特别是不想看到Spring框架的DEBUG级别日志,可以将第一行的日志级别由DEBUG改为INFO。

需要注意的是,配置完成后,需要重启应用服务器以使配置生效。此外,还可以根据具体需求调整日志级别和输出格式,以满足不同场景下的日志记录需求。

通过这种方式,可以方便地监控和调试MyBatis中的SQL执行情况,及时发现和解决问题。

热点内容
lol服务器人数怎么挤 发布:2025-03-19 01:29:19 浏览:838
兄弟连的php 发布:2025-03-19 01:24:25 浏览:809
自己做脚本可不可以 发布:2025-03-19 01:20:13 浏览:533
33的源码值 发布:2025-03-19 01:13:25 浏览:814
虚荣安卓怎么充值 发布:2025-03-19 01:12:27 浏览:892
如何更改报考密码 发布:2025-03-19 01:08:12 浏览:416
python日期类型 发布:2025-03-19 01:02:28 浏览:415
android飞机大战源码 发布:2025-03-19 00:56:52 浏览:736
javaset方法 发布:2025-03-19 00:44:21 浏览:246
淘宝上传文件夹 发布:2025-03-19 00:36:30 浏览:73