今天接着说说如何在日志中配置SQL打印输出。
log4j的依赖添加
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.7</version> <scope>provided</scope> </dependency>
JdbcTemplate 打印sql配置
在log4j.properties 中添加如下配置:
log4j.rootLogger =stdout log4j.appender.stdout= org.apache.log4j.ConsoleAppender log4j.logger.org.springframework.jdbc.core.JdbcTemplate=debug
这样就可以打印sql,如果还需要跟踪执行praparedStatement执行过程,添加参数,打印结果可以添加
#跟踪执行praparedStatement执行过程,添加参数 log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=debug log4j.logger.java.sql.ResultSet = debug
原理:
在JdbcTemplate 类中有如下的代码,所以,日志级别只能设置成debug
参考配置:
log4j.rootLogger =stdout log4j.appender.stdout= org.apache.log4j.ConsoleAppender log4j.appender.stdout.Threshold=debug log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n # 过滤掉第三方jar包的日志 log4j.logger.org.springframework=warn log4j.logger.freemarker.cache=warn #sql日志输出 log4j.logger.org.springframework.jdbc.core.JdbcTemplate=debug #跟踪执行praparedStatement执行过程,添加参数 log4j.logger.org.springframework.jdbc.core.StatementCreatorUtils=debug log4j.logger.java.sql.ResultSet = debug
效果如下:
MyBatis打印sql配置
如果是MyBatis的话
参考配置,在log4j.xml文件中:
<configuration status="info"> <appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%-5level %d %logger{36} - %msg%n" /> </Console> </appenders> <loggers> <!--mapper接口所在的位置--> <logger name="com.shop.hessian.mapper" level="debug" additivity="false"> <appender-ref ref="STDOUT" /> </logger> <root level="info"> <appender-ref ref="logfile" /> <!--sql打印可用--> <appender-ref ref="STDOUT"/> </root> </loggers> </configuration>
效果如下:
如果是SpringBoot 项目则可以直接在application.yml 添加如下配置即可:
mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl