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等)重启。
语句:
在这里插入图片描述
参数:
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值