Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java p6spy使用spring引导两次输出sql消息_Java_Hibernate_Spring Boot_P6spy - Fatal编程技术网

Java p6spy使用spring引导两次输出sql消息

Java p6spy使用spring引导两次输出sql消息,java,hibernate,spring-boot,p6spy,Java,Hibernate,Spring Boot,P6spy,我想在SpringBoot中通过p6spy显示sql参数,因为hibernate显示的sql参数非常庞大。但由于某些原因,p6spy logger输出sql消息两次,尽管实际上对db的查询只执行一次。通常的spring应用程序与我的p6spy配置一起正常工作。Spring引导应用程序正常使用hibernate输出 spy.properties: driverlist=org.postgresql.Driver appender=com.p6spy.engine.spy.appender.Slf4

我想在SpringBoot中通过p6spy显示sql参数,因为hibernate显示的sql参数非常庞大。但由于某些原因,p6spy logger输出sql消息两次,尽管实际上对db的查询只执行一次。通常的spring应用程序与我的p6spy配置一起正常工作。Spring引导应用程序正常使用hibernate输出

spy.properties:

driverlist=org.postgresql.Driver
appender=com.p6spy.engine.spy.appender.Slf4JLogger
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
customLogMessageFormat=time %(executionTime)|con %(connectionId)|%(sqlSingleLine)
log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="layoutPattern">
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
        </Property>
    </Properties>

<Appenders>
    <Console name="stdout">
        <PatternLayout pattern="${layoutPattern}"/>
    </Console>


</Appenders>

<Loggers>
    <Root level="info">
        <AppenderRef ref="stdout" />
    </Root>
</Loggers>

</Configuration>
}

我期望有一个sql输出,但得到两个具有不同连接的类似sql输出:

1) p6spy-time 1 | con 2 |插入serverstartups(应用程序名、主机名、ip、startDate、stopDate、startupId)值(“”,'DIMON-LAPTOP','192.168.88.244','2019-02-11T12:00:46.989+0300',NULL,1)

2) p6spy-time 1 | con 5 |插入serverstartups(应用程序名、主机名、ip、startDate、stopDate、startupId)值(“”,'DIMON-LAPTOP','192.168.88.244','2019-02-11T12:00:46.989+0300',NULL,1)


正如您所看到的,除了连接(2和5)之外,这些输出都是类似的。

结果是,spring boot自动为p6spy创建包装器,因此通过替换线路解决了这个问题

return new P6DataSource(dataSource)
在线

return dataSourse;

SpringBoot不会自动为数据源创建包装器。但它有:

使用P6DataSource包装数据源或修改连接URL 要添加“p6spy:”

你不应该两者都用

return dataSourse;