为什么需要打印 SQL 日志?
在开发过程中,查看实际执行的 SQL 语句对于排查问题、优化查询至关重要。使用 Logback 配合 MyBatis、Hibernate 或 JPA 等框架,可以轻松将 SQL 输出到控制台或日志文件。
基础 Logback 配置(logback-spring.xml)
以下是一个典型的配置,用于在控制台打印 SQL 日志:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 打印 MyBatis 的 SQL 日志 -->
<logger name="com.yourpackage.mapper" level="DEBUG" />
<logger name="org.apache.ibatis" level="DEBUG" />
<logger name="java.sql" level="DEBUG" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
针对不同 ORM 框架的配置建议
- MyBatis:设置 Mapper 接口所在包的日志级别为 DEBUG。
- Hibernate:在 application.properties 中添加
logging.level.org.hibernate.SQL=DEBUG和logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE。 - JPA (Spring Data):同 Hibernate,因为底层通常使用 Hibernate。
注意事项
- 生产环境应关闭 SQL 日志,避免敏感信息泄露和性能损耗。
- 确保 Logback 依赖已正确引入(通常通过 spring-boot-starter-logging)。
- 日志级别设置过高(如 TRACE)可能导致大量输出,影响性能。