Ibatis,Mybatis利用log4j将SQL语句打印在控制台

本文介绍如何在MyBatis结合Spring的项目中配置log4j以记录SQL查询语句及异常信息,通过设置不同的日志级别,可以方便地在控制台或日志文件中查看执行的SQL语句。

在做一个项目Demo的时候,使用MyBatis+Spring,发现写好的SQL查询出来不对劲,但是也没报错,

所以想到用日志把SQL语句打出来.也参考了部分网友的代码,最后总结了一下,发现正常运行。

本人项目为Mybatis+SpringMVC,所有都已配置好,且正常运行。

此过程无需配置,直接在classPath目录创建log4j.properties,文件,并将下列代码粘贴进去即可,此代码部分参考网友。

 ### set log levels ###
log4j.rootLogger = debug ,  stdout


log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d %p [%c] - %m%n

### 输出到日志文件 ###
log4j.appender.D
 = 
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
 = 
logs/log.log
log4j.appender.D.Append
 = 
true
log4j.appender.D.Threshold
 = 
DEBUG ## 输出DEBUG级别以上的日志
log4j.appender.D.layout
 = 
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
 = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ] 
 %m%n

### 保存异常信息到单独文件 ###
log4j.appender.D
 = 
org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File
 = 
logs/error.log ## 异常日志文件名
log4j.appender.D.Append
 = 
true
log4j.appender.D.Threshold
 = 
ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.D.layout
 = 
org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern
 = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n



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=debug,stdout


Log4J中输出形式选择:

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

需要有Log4j.jar包,如果没有可以在我的资源中下载.

<think>好的,用户的问题是关于在Spring Boot项目中配置MyBatisLog4j打印SQL语句。我需要先回忆一下相关的配置步骤,然后结合提供的引用内容来组织答案。 首先,用户提到了Log4j,但提供的引用中更多是关于Logback和MyBatis的配置。可能需要说明Log4j的配置方法,但也要提到Logback作为更常见的Spring Boot默认日志框架。比如,引用3提到了两种方法:MyBatis的StdOutImpl和Logback配置。 接下来,我需要分步骤说明配置过程。可能包括添加依赖、配置Log4j属性文件、设置MyBatis日志实现等。需要注意的是,Spring Boot默认使用Logback,所以如果用户要用Log4j,可能需要排除Logback并引入Log4j的starter,这在引用中没有提到,可能需要补充。 然后,示例代码部分需要给出具体的配置文件,比如log4j2.xml或application.properties中的设置。引用3提到在application.yml中配置log-impl为StdOutImpl,这可能适用于控制台输出,但结合Log4j的话,可能需要不同的配置。 还需要注意不同MyBatis版本的日志实现类路径是否正确,比如引用3中的org.apache.ibatis.logging.stdout.StdOutImpl是否正确,以及Log4j的logger配置,比如引用2和3中的方法。 可能的问题点:用户可能混淆了Logback和Log4j的配置,需要明确区分。另外,确保依赖正确,比如是否使用了Spring Boot的Log4j starter,或者需要排除默认的logging starter。 最后,生成相关问题时要围绕MyBatis日志配置、不同日志框架的选择、性能影响等,参考用户示例的结构。</think>### 在 Spring Boot 中配置 MyBatisLog4j 打印 SQL 语句 #### 1. 添加 Log4j 依赖并排除默认日志框架 Spring Boot 默认使用 Logback,需在 `pom.xml` 中排除 `spring-boot-starter-logging`,并添加 Log4j2 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ``` #### 2. 配置 MyBatis 日志实现 在 `application.properties` 中指定 MyBatis 使用 SLF4J(与 Log4j 兼容): ```properties mybatis.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl ``` #### 3. 配置 Log4j2 输出 SQL 日志 在 `log4j2.xml` 中设置日志级别和输出格式: ```xml <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Logger name="com.yourpackage.mapper" level="DEBUG" additivity="false"> <AppenderRef ref="Console"/> </Logger> <Root level="INFO"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ``` #### 4. 验证配置 执行数据库操作后,控制台会输出类似内容: ``` 15:30:22 [main] DEBUG com.example.mapper.UserMapper.selectById - ==> Preparing: SELECT * FROM user WHERE id=? 15:30:22 [main] DEBUG com.example.mapper.UserMapper.selectById - ==> Parameters: 1(Integer) ``` #### 注意事项 - 若需输出参数值,确保 MyBatis 版本支持 `log-impl` 配置[^3]。 - 生产环境建议限制 SQL 日志级别为 `DEBUG`,避免性能问题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值