使用p6spy 2监控及打印Spring 4 JdbcTemplate生成的SQL语句

使用P6Spy监控Spring JdbcTemplate SQL操作
本文介绍了如何利用P6Spy监控Spring应用程序中JdbcTemplate执行的SQL语句。P6Spy是一个数据库监控工具,通过配置spy.properties文件设置如driverlist、reloadproperties、appender等参数来实现日志记录。日志可以输出到文件或控制台,并可自定义日志格式。在Spring配置中,需用P6Spy的P6DataSource替换原有数据源,以实现对SQL执行的跟踪。

有时在调试代码的时候需要跟数据库打交道,这时如果知道数据库执行的是什么样的语句,好多问题就迎刃而解了,而p6spy正是这样的一个数据库监控工具。

在Spring应用中使用p6spy时,需要在项目中添加一个spy.properties文件,其中常用的设置有以下几项:

driverlist=com.mysql.jdbc.Driver

reloadproperties=true
logfile = D:\\spy.log

#appender=com.p6spy.engine.spy.appender.Slf4JLogger
#appender=com.p6spy.engine.spy.appender.StdoutLogger
appender=com.p6spy.engine.spy.appender.FileLogger

#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat

dateformat=yyyy-MM-dd HH:mm:ss

其中driverlist需要列出数据源的驱动,reloadproperties表示某些设置能否更新后自动使用新设置,appender表示日志输出的方式,一般选择文件输出,当然也可以选择输出到控制台,logMessageFormat可以选择是多选还是单行日志,dateformat表示日志的时间格式。p6spy的日志格式大概如图所示:

这里写图片描述

另外在Spring配置中需要使用p6spy自带的数据源来取代原来配置的数据源,实际就是在原来的数据源外面包上一个p6spy的包装,以下是一个用Java类配置的Spring配置文件,使用MySQL的数据源生成P6DataSource类型的数据源,然后在程序中使用这个P6DataSource类型的数据源就可以了:

    //配置MySQL数据源
    @Bean
    public BasicDataSource dataSourceTarget() {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://xxx.xx.xxx.xxx:3306/xxxxx?characterEncoding=utf-8");
        dataSource.setUsername("xxxx");
        dataSource.setPassword("xxxxx");
//        dataSource.setDriverClassName("${jdbc.driver}");
//        dataSource.setUrl("${jdbc.url}");
//        dataSource.setUsername("${jdbc.name}");
//        dataSource.setPassword("${jdbc.password}");
        dataSource.setMaxActive(30);
        dataSource.setMaxIdle(5);
        return dataSource;
    }

    @Bean
    public P6DataSource dataSource() {
        P6DataSource dataSource = new P6DataSource(dataSourceTarget());
        return dataSource;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值