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