首页 > 解决方案 > Spring Boot:禁用 DDL 日志记录

问题描述

我在测试环境中设置了spring.jpa.hibernate.ddl-auto=create-drop以及。spring.jpa.show-sql=true我想在日志中查看 SQL 语句,但只有 DML 语句。是否可以禁用 DDL 语句日志记录(create table、、drop table等)?

标签: sqlspringspring-boothibernatelogging

解决方案


不,那是不可能的。您可以通过查看org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase#accept执行日志记录并随后执行语句的代码来亲自了解。您唯一能做的就是最初将日志级别设置为 OFF,然后在启动后将其设置为 DEBUG,但如何做到这一点取决于您使用的日志库。

我认为 Spring 使用 SLF4J 和 logback 所以类似下面的东西应该可以工作:

LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
loggerContext.getLogger("org.hibernate.SQL").setLevel(Level.DEBUG); 

推荐阅读