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