ideamybatis的sql语句⽇志输出
常⽤的⽇志输出为Log4j,但按照常规的配置,涉及mybatis那部分⽇志不能打印出来的;由于没有⽇志的输出,开发⼈员很难从控制台中迅速出相应的sql语句,对调试和错误带来了⼀定的困扰,针对这个问题,我们需要额外的配置以达到⽇志的输出
常见的两种⽅法为:
在⽇志配置⽂件(log4j.properties)中增加将mybatis那部分⽇志级别设置为DEBUG,配置如下:
#mybatis部分
log4j.logger.ibatis=DEBUG
log4j.logger.ibatismon.jdbc.SimpleDataSource=DEBUG
log4j.logger.ibatismon.jdbc.ScriptRunner=DEBUG
log4j.logger.ine.impl.SqlMapClientDelegate=DEBUG
#与sql相关
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
注意:另外需要在定义LOG输出级别时,把DEBUG级别的也作为⽇志输出的⼀部分,附个⼈完整Log4j配置:
#定义LOG输出级别
#定义⽇志输出⽬的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定⽇志输出格式,下⾯⼀⾏是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m  %l%n
#⽂件⼤⼩到达指定尺⼨的时候产⽣⼀个新的⽂件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出⽬录
log4j.appender.File.File = logs/ssm.log
#定义⽂件最⼤⼤⼩
log4j.appender.File.MaxFileSize = 10MB
#输出所以⽇志,如果换成DEBUG表⽰输出DEBUG以上级别⽇志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m  %l%n
#mybatis⽇志配置需要将⽇志的输出级别调为debug
log4j.logger.ibatis=DEBUG
log4j.logger.ibatismon.jdbc.SimpleDataSource=DEBUG
log4j.logger.ibatismon.jdbc.ScriptRunner=DEBUG
log4j.logger.ine.impl.SqlMapClientDelegate=DEBUG
#与sql相关
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
配置根Logger = [ level ] , appenderName
【level】是⽇志的级别,分别有debug -> info -> warn -> error 四种⽇志级别;
【appenderName】,配置⽇志的输出⽬录,同⼀个⽇志可以配置多个输出⽬的地;
配置log输出⽬的地:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(⽂件)
org.apache.log4j.DailyRollingFileAppender(每天产⽣⼀个⽇志⽂件)
org.apache.log4j.RollingFileAppender(⽂件⼤⼩到达指定尺⼨的时候产⽣⼀个新的⽂件)
org.apache.log4j.WriterAppender(将⽇志信息以流格式发送到任意指定的地⽅)
2、在Mybatis的配置⽂件中增加setting配置
idea debug个⼈在搭ssm框架中,l⽂件是省略的,需要后⾯增加,详细如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 打印查询语句 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
⽇志部分,增加name为logImpl的setting配置,value属性(即⽇志的打印⽅式)可选有:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根据⾃⼰的需要进⾏配置,但个⼈在测试的过程中,只有值为STDOUT_LOGGING时,⽇志才有输出,此处存在疑问,有哪位⼤神能指点⼀下么?
另外settings的更多参数可以参考官⽹⽂档:
/mybatis-3/zh/configuration.html#settings
注意:在增加l后,需要在spring与mybatis的整合配置⽂件(l)中增加映射才可⽣效,如下:
<!-- spring和MyBatis整合-->
<bean id="sqlSessionFactory" class="batis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- ⾃动扫描mybatis配置⽂件 -->
<property name="configLocation" value="l"></property>
<!-- ⾃动扫描l⽂件 -->
<property name="mapperLocations" value="classpath:com/merch/mapping/*.xml"></property>
</bean>
输出如下:
## END
## BEGIN  name=Tomcat 7.0.94 seq=00000034 time=2021-09-15 14:13:11
SELECT *
FROM (
SELECT row_.*, rownum AS rn
FROM (
SELECT
Releasing transactional SqlSession [org.apache.ibatis.sessionb2]
Fetched SqlSession [org.apache.ibatis.session.defa03cb2] from current transaction
ooo Using Connection [oracle.jdbc.driver.T4CConnection@326c4fb9]
==>  Preparing: select * from
==> Parameters: 0(String), 20210617(String), 20210915(String), 004(String), 004(String)
<==    Columns:
<==        Row: 7
<==        Row: 3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。