How to log @Query in PagingAndSortingRepository?

岁酱吖の 提交于 2019-12-24 09:46:25

问题


Is there a way to log some custom @Query method?

Here is example of my code:

@Query(value = "SELECT * FROM transfer WHERE char_length(internal_id) = 5 " +
        "AND internal_id REGEXP '^[0-9]+$' AND project_id = :projectId order by created_at desc limit 1", nativeQuery = true)
Transfer findLastWithDefaultOurIdForProject(@Param("projectId") String projectId);

It's written in interface that extends spring-data PagingAndSortingRepository.

I have tried to log it with adding these lines in property file: log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE

but I only get queries without real values passed from my service to repository interface?


回答1:


Try this configuration:

application.properties

spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database=h2

Add logback.xml file under src/main/resources to configure Hibernate to show parameters passed to the SQL Query:

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.web" level="DEBUG"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="org.hibernate.SQL" additivity="false" >
        <level value="DEBUG" />
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="org.hibernate.type" additivity="false" >
        <level value="TRACE" />
        <appender-ref ref="STDOUT" />
    </logger>

</configuration>

You can find the working Demo Project in my GitHub repository.




回答2:


The problem is your application properties. http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-levels

You have the wrong prefix on the properties.

logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type=TRACE



来源:https://stackoverflow.com/questions/39535232/how-to-log-query-in-pagingandsortingrepository

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!