p6spy使用(2)
2019-06-26 15:00
38 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangduqiang747/article/details/98124090
写到单独的日志里,不和其他日志混起来
1. com.a.LogbackLogger
2. log4j的配置
3. spy.properties的配置
p6spy的logger有点怪,FIleLogger并没有打到 spy.properties配置的文件里, 改用log4j package com.a;
import com.p6spy.engine.logging.appender.FileLogger; import com.p6spy.engine.logging.appender.StdoutLogger;
//import org.slf4j.Logger; //import org.slf4j.LoggerFactory; import org.apache.log4j.Logger; public class LogbackLogger extends FileLogger{ // private static final Logger logger = LoggerFactory.getLogger("p6spy"); // private static final Logger logger = LoggerFactory.getLogger(LogbackLogger.class); private static final Logger logger = Logger.getLogger(LogbackLogger.class); public String getLastEntry() { return lastEntry; } public void setLastEntry(String lastEntry) { this.lastEntry = lastEntry; } protected String lastEntry; private String lastSql=""; @Override public void logSQL(int connectionId, String s, long l, String category, String s1,String sql) { if("result".equals(category)){//过滤掉 return; //result没有信息量。resultset才有 } if ("resultset".equals(category)) { if (s1.equals(lastSql)){ return;//如果是重复的查询结果,即一个同一个查询多行结果导致的多行问题。 return }else{ logger.info(s1); //logger.info(sql); lastSql = s1; } }else if("statement".equals(category)){ logger.info(sql); }else if("commit".equals(category)){ logger.info("commit"); } } @Override public void logException(Exception e) { logger.error(e.getMessage(),e); } @Override public void logText(String s) { logger.info(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(); } }
log4j
#jdbc sql 日志
log4j.logger.com.a=DEBUG, LogbackLogger log4j.appender.LogbackLogger=org.apache.log4j.FileAppender log4j.appender.LogbackLogger.Append=false log4j.appender.LogbackLogger.File=d:/jdbcLog.log log4j.appender.LogbackLogger.DatePattern= '.'yyyy-MM-dd log4j.appender.LogbackLogger.layout=org.apache.log4j.PatternLayout log4j.appender.LogbackLogger.layout.ConversionPattern= [%d] [%-5p] : %m%n
spy.properties --不过滤category logfile = D:/workspace/spy.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
#log4j.logger.p6spy=warn,STDOUT log4j.logger.p6spy=debug,FILE log4j.appender.spy6p.File=D:/workspace/spy.log dateformat=HH:mm:ss useprefix=false
p6spy的logger有点怪,FIleLogger并没有打到 spy.properties配置的文件里, 改用log4j package com.a;
import com.p6spy.engine.logging.appender.FileLogger; import com.p6spy.engine.logging.appender.StdoutLogger;
//import org.slf4j.Logger; //import org.slf4j.LoggerFactory; import org.apache.log4j.Logger; public class LogbackLogger extends FileLogger{ // private static final Logger logger = LoggerFactory.getLogger("p6spy"); // private static final Logger logger = LoggerFactory.getLogger(LogbackLogger.class); private static final Logger logger = Logger.getLogger(LogbackLogger.class); public String getLastEntry() { return lastEntry; } public void setLastEntry(String lastEntry) { this.lastEntry = lastEntry; } protected String lastEntry; private String lastSql=""; @Override public void logSQL(int connectionId, String s, long l, String category, String s1,String sql) { if("result".equals(category)){//过滤掉 return; //result没有信息量。resultset才有 } if ("resultset".equals(category)) { if (s1.equals(lastSql)){ return;//如果是重复的查询结果,即一个同一个查询多行结果导致的多行问题。 return }else{ logger.info(s1); //logger.info(sql); lastSql = s1; } }else if("statement".equals(category)){ logger.info(sql); }else if("commit".equals(category)){ logger.info("commit"); } } @Override public void logException(Exception e) { logger.error(e.getMessage(),e); } @Override public void logText(String s) { logger.info(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(); } }
log4j
#jdbc sql 日志
log4j.logger.com.a=DEBUG, LogbackLogger log4j.appender.LogbackLogger=org.apache.log4j.FileAppender log4j.appender.LogbackLogger.Append=false log4j.appender.LogbackLogger.File=d:/jdbcLog.log log4j.appender.LogbackLogger.DatePattern= '.'yyyy-MM-dd log4j.appender.LogbackLogger.layout=org.apache.log4j.PatternLayout log4j.appender.LogbackLogger.layout.ConversionPattern= [%d] [%-5p] : %m%n
spy.properties --不过滤category logfile = D:/workspace/spy.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
#log4j.logger.p6spy=warn,STDOUT log4j.logger.p6spy=debug,FILE log4j.appender.spy6p.File=D:/workspace/spy.log dateformat=HH:mm:ss useprefix=false
相关文章推荐
- p6spy使用小结
- sql性能监控(p6spy使用)
- 使用p6spy 打印 oracle,mysql 等数据库完整带参数 sql
- 使用 P6Spy 来格式化 SQL 语句,支持 Hibernate 和 iBATIS
- 监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
- 在hibernate中使用P6spy
- P6SPY(JDBC SQL拦截)的安装和使用
- 监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
- 监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
- 使用P6Spy格式化SQL语句
- 监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
- Spring4.0.2使用p6spy打印mybatis执行SQL
- 在hibernate中使用P6spy
- 使用 P6Spy 来格式化 SQL 语句,支持 Hibernate 和 iBATIS
- P6SPY、SQL Profiler结合使用
- P6Spy配置使用
- [置顶] 【p6spy】程序员开发利器P6spy——打印执行sql语句,mybatis、ibatis、Hibernate均可使用
- 监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介
- 监控和剖析数据库操作P6Spy,SQL Profiler,SQL 使用简介
- 使用p6spy打印hibernate或者PreparedStatement的带参数值的sql语句