写到单独的日志里,不和其他日志混起来
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