解决网上那些设置了却不打印问题,按本教程操作绝√打印。

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐