• p6spy打印SQL


    一 Springboot项目

    1       <dependency>
    2             <groupId>p6spy</groupId>
    3             <artifactId>p6spy</artifactId>
    4             <version>3.8.0</version>
    5         </dependency>
    /**
     * @author WGR
     * @create 2019/9/7 -- 12:59
     */
    
    /**
     * 对数据源进行封装,打印运行sql
     */
    @Configuration
    public class P6spyConfig {
    
        class P6DataSourceBeanPostProcessor implements BeanPostProcessor,Ordered {
    
            @Override
            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                if (bean instanceof DataSource){
                    return new P6DataSource((DataSource) bean);
                }
                return bean;
            }
    
            @Override
            public int getOrder() {
                return Ordered.LOWEST_PRECEDENCE;
            }
        }
    
        @Bean
        public P6DataSourceBeanPostProcessor p6DataSource(){
            return new P6DataSourceBeanPostProcessor();
        }
    
    
    }

    如果你是Boot项目,建议你这样包装数据源,在mybatisplus推荐,但是在测试过程中没有打印SQL,(现官网打不开)

    二 SSM项目

          <dependency>
                <groupId>p6spy</groupId>
                <artifactId>p6spy</artifactId>
                <version>3.8.0</version>
            </dependency>

    spy.properties的文件配置

    # P6Spyu7684u914du7f6e,u53c2u8003u5b98u65b9u6587u6863
    # u5b98u65b9u6587u6863u4f4du7f6e: http://p6spy.readthedocs.io/en/latest/configandusage.html#common-property-file-settings
    
    # u57fau672cu8bbeu7f6e
    autoflush=false
    dateformat=yyyy-MM-dd HH:mm:ss
    reloadproperties=true
    reloadpropertiesinterval=60
    
    # u5b9au5236u5316u8f93u51fa
    appender=com.p6spy.engine.spy.appender.Slf4JLogger
    logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat
    customLogMessageFormat=%(executionTime)ms | %(sqlSingleLine)
    
    # u6570u636eu5e93u65e5u671f,u5e03u5c14u8bbeu7f6e
    databaseDialectDateFormat=yyyy-MM-dd HH:mm:ss
    databaseDialectBooleanFormat=boolean
    
    # JMXu8bbeu7f6e
    jmx=false
    
    # u8fc7u6ee4u4e0du9700u8981u7684SQLu8bedu53e5
    filter=true
    
    # u6392u9664u7684u8bedu53e5u7c7bu578b
    #excludecategories=info,debug,result,resultset,batch,commit,rollback
    excludecategories=info,debug,result,resultset,batch,commit,rollback

    xml的配置

     1 <!-- https://github.com/brettwooldridge/HikariCP -->
     2     <bean id="systemDataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
     3        <property name="driverClassName" value="${system.jdbc.driver}" />
     4        <property name="jdbcUrl" value="${system.jdbc.url}" />
     5        <property name="username" value="${system.jdbc.username}" />
     6        <property name="password" value="#{new String(T(java.util.Base64).getDecoder().decode('${system.jdbc.password}'.getBytes()))}" />
     7        
     8         <!-- 参考: https://blog.csdn.net/ggd628300/article/details/51758925 -->
     9         <!-- 连接只读数据库时配置为true, 保证安全 -->
    10         <property name="readOnly" value="false" />
    11         <!-- 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒 -->
    12         <property name="connectionTimeout" value="30000" />
    13         <!-- 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 -->
    14         <property name="idleTimeout" value="600000" />
    15         <!-- 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) -->
    16         <property name="maxLifetime" value="1800000" />
    17         <!-- 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) -->
    18         <!-- 浦发生产: 12C36G  effective_spindle_count为有效磁盘数-->
    19         <property name="maximumPoolSize" value="30" />
    20        
    21     </bean>
    22     
    23     <!-- 3.代理的连接池,为了打印实际的SQL语句 -->
    24     <bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
    25        <constructor-arg name="delegate" ref="systemDataSource"/>
    26     </bean>

     p6spy是数据库动态监控的一种框架,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。

  • 相关阅读:
    Ansible安装配置
    Git 工作流程
    使用 Docker 搭建 Tomcat 运行环境
    Linux的cron与%
    配置sonar和jenkins进行代码审查
    Jenkins配置基于角色的项目权限管理
    Jenkins和maven自动化构建java程序
    Jenkins修改workspace和build目录
    Git 进阶指南
    git代码回滚:Reset、Checkout、Revert的选择
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11677998.html
Copyright © 2020-2023  润新知