p6spy使用_习惯累积沉淀_新浪博客

用来给jdbc驱动加一层监控,打印出来所有的语句

p6spy.jar和spy.properties放到classpath中。
修改spy.properties
logfile         = log/anly/dbspy.log
realdriver=oracle.jdbc.driver.OracleDriver

替换驱动。修改driver为:
drivers=com.p6spy.engine.spy.P6SpyDriver


自定义log输出

realdriver=oracle.jdbc.driver.OracleDriver
reload = false
stacktrace = false
module.log=com.p6spy.engine.logging.P6LogFactory
#appender=com.p6spy.engine.logging.appender.StdoutLogger
#appender=com.p6spy.engine.logging.appender.FileLogger
appender=com.a.LogbackLogger        ########改为自己定义的logger
log4j.logger.p6spy=warn,STDOUT
dateformat=hh:mm:ss
useprefix=false



package com.a;

import com.p6spy.engine.logging.appender.StdoutLogger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
  
public class LogbackLogger extends   StdoutLogger{
    private static final Logger logger = LoggerFactory.getLogger("p6spy");
  
    public String getLastEntry() {
        return lastEntry;
    }
  
    public void setLastEntry(String lastEntry) {
        this.lastEntry = lastEntry;
    }
  
    protected String lastEntry;
  
    @Override
    public void logSQL(int connectionId, String s, long l, String category, String s1,String sql) {
        //if (!"resultset".equals(category)) {
        //logger.info(trim(s1));

    System.out.println("+++++++++++++++++log++++begin++++++++++++++++++++++++++");
    System.out.println(s);
    System.out.println(category);
    System.out.println(s1);
    System.out.println(sql);
    System.out.println("+++++++++++++++++log++++end+++++++++++++++++++++++++++");
        //logger.info(trim(sql));
        //}
    }
    
    
  
    @Override
    public void logException(Exception e) {
        logger.error(e.getMessage(),e);
    }
  
    @Override public void logText(String s) {
        //logger.info(s);
   
    System.out.println("00000");
    System.out.println( s );
        
        this.setLastEntry(s);
    }
   
    private String trim(String sql){
        StringBuilder sb = new StringBuilder("\r\n");
        sb.append(sql.replaceAll("\n|\r|\t|'  '"," "));
        return sb.toString();
    }
  

com.a.LogbackLogger.logSQL(int, String, long, String, String, String)
这个函数是关键。

spy。properties里,
excludecategories=info,debug,result,batch,resultset,statement 
是过滤掉哪些 categories

statement是语句如select update delete 
result和resultset 是查询结果。最好不要log,因为很多会数据量大

参考:
http://blog.sina.com.cn/s/blog_99201d8901012cy8.html
https://blog.csdn.net/wenbing756169311/article/details/50594241
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值