Springboot项目JPA在控制台不打印SQL语句或参数
解决网上那些设置了却不打印问题,按本教程操作绝✅打印
·
解决网上那些设置了却不打印问题,按本教程操作绝√打印。
1 检查项目中是否有日志框架
Spring Data JPA是依赖日志框架从而在控制台打印日志,若你项目中没有引入日志框架无论你怎么配置show.sql都不会打印日志。
举例
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
说明:你可能用的是slf4j-api和slf4j的实现,logback-classic只是同样也是slf4j-api,只不过是对其进行了改良。用slf4j无伤大雅,api和logback都是相同的,区别是实现不同。
2 开启配置
举例:
spring.jpa.database=mysql
spring.jpa.database-platform=mysql
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=trace
此时重新启动项目可以看到控制台打印了日志。
3 若还是无法显示日志
引入的是logback,resource新建logback.xml配置文件:
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<appender name="SQLROLLINGFILE">
<File>/tmp/sql.log</File>
<rollingPolicy>
<FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout>
<Pattern>%-4date | %msg %n</Pattern>
</layout>
</appender>
<logger name="org.hibernate.SQL" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="SQLROLLINGFILE"/>
</logger>
<logger name="org.hibernate.type" additivity="false">
<level value="TRACE"/>
<appender-ref ref="SQLROLLINGFILE"/>
</logger>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
</configuration>
如果引入的日志框架是log4j2,同样在resource下加入配置文件log4j2.properties:
monitorInterval=30
status=INFO
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d %p [%t] %C{3.}.%M(%L) %m%n
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
log4j.logger.org.hibernate.SQL=debug
log4j.logger.org.hibernate.type=trace
如果你的SpringBoot项目没用application.yml配置文件启动项目
那么请在resource下加上application.yml配置文件,并添加属于日志框架的配置:
logging:
level:
org.hibernate.SQL: DEBUG
org.hibernate.type: TRACE
至于JPA部分,看你项目中是怎么配置JPA的,在同样的地方加上第一步的JPA show sql的配置。
4 最后
重启项目,此时一定会打印日志,如果没有,请检查依赖,或删除缓存(编译target等)重启。
语句:
参数:
更多推荐
已为社区贡献2条内容
所有评论(0)