如何使用自定义消息记录jpa查询?

时间:2018-10-18 14:01:48

标签: java hibernate spring-data-jpa log4j2

我有一个带有spring-data-jpa 2.0.5.RELEASE的项目。我需要使用参数和其他信息登录每个执行的查询(insertupdatedeleteselect)的文件。我发现您可以启用Hibernate来记录查询和参数,但是它们不是我所需的格式。

现在,它打印出如下内容: -(信息)休眠:从表a中选择*,其中a.x =? -(信息)将参数[1]绑定为[VARCHAR]-com.mypackage.foo

我想要类似的东西: -(调试)用户Mickey Mouse从表a中询问Select *,其中a.x =? [com.mypackage.foo]

有没有办法做类似的事情? 我尝试使用aop,但找不到切入点,并且不确定是否找到正确的包装方法。

这是我的测试。 (不起作用)

@Pointcut("within(org.springframework.data.jpa.repository.query.JpaQueryExecution+)")
    public void jpaQueryMethods() {}

    @Pointcut("execution(* execute(..))")
    public void executionMethods() {}

    @Before("jpaQueryMethods()")
    public void beforeJpaQueryExecution(JoinPoint joinPoint){
        logger.fatal(" signature->", joinPoint.getSignature().toLongString());
        if(joinPoint.getArgs()!=null) {
            for(Object arg: joinPoint.getArgs()) {
                logger.info("----------->"+String.valueOf(arg));
            }
        }

1 个答案:

答案 0 :(得分:1)

要查看绑定参数,必须设置此属性:

#Spring boot
logging.level.org.hibernate.type.descriptor.sql=trace

您还可以添加自定义消息: How to Audit Spring data jpa @Query?