p6spy可以將帶參數的sql直接打出來方便調試。
1.gradle中引入
compile group: 'p6spy', name: 'p6spy', version: '3.8.1'
2.resources目錄下增加spy.properties
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory # 自定義日志打印 logMessageFormat=xxx.P6SpyLogger #自己實現的P6SpyLogger # 使用日志系統記錄sql appender=com.p6spy.engine.spy.appender.Slf4JLogger ## 配置記錄Log例外 excludecategories=info,debug,result,batc,resultset # 設置使用p6spy driver來做代理 deregisterdrivers=true # 日期格式 dateformat=yyyy-MM-dd HH:mm:ss # 實際驅動 driverlist=oracle.jdbc.OracleDriver # 是否開啟慢SQL記錄 outagedetection=true # 慢SQL記錄標准 秒 outagedetectioninterval=2
3.P6SpyLogger
public class P6SpyLogger implements MessageFormattingStrategy { @Override public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) { return !"".equals(sql.trim()) ? "| took " + elapsed + "ms | " + category + " | connection " + connectionId + "\n " + P6Util.singleLine(sql) + ";" : ""; } }
4.DruidConfig
public DataSource druidDataSource() throws Exception { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName("oracle.jdbc.OracleDriver"); druidDataSource.setDbType("oracle"); ....... return new P6DataSource(druidDataSource); }