添加部分debug日志,修改sqlcontext is null的日志级别。因为Oracle的T4PreparedStatement不是通过connection的prepareStatement创建的,会频繁提示。

pull/1879/head
xiaobingyang 3 years ago
parent 6fcdb5fdef
commit 75ad585fc6

@ -129,27 +129,35 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
if (sqlContext != null) {
sql = sqlContext.getSql();
sqlContext.enterExecute();
logger.debug("sql profiler enter execute: class: {}, method: {}, sql: {}.",
clazz.getName(),
method.getName(),
sql);
}
}
} else if (target instanceof java.sql.Statement) {
} else if (target instanceof Statement) {
if (STATEMENT_EXECUTE_METHOD_MAP.isMatch(method.getTargetMethod())) {
sql = String.valueOf(args[0]);
StatementSqlContext sqlContext = statement2SqlMap.get(target);
if (sqlContext != null) {
sqlContext.enterExecute();
} else {
if (logger.isDebugEnabled()) {
logger.debug("sql profiler enter execute: class: {}, method: {}, sql: {}.",
clazz.getName(),
method.getName(),
sql);
}
logger.debug("sql profiler enter execute: class: {}, method: {}, sql: {}.",
clazz.getName(),
method.getName(),
sql);
}
} else if (STATEMENT_EXECUTE_BATCH_METHOD_MAP.isMatch(method.getTargetMethod())) {
StatementSqlContext sqlContext = statement2SqlMap.get(target);
if (sqlContext != null) {
sql = sqlContext.getBatchSql();
sqlContext.enterExecute();
logger.debug("sql profiler enter execute: class: {}, method: {}, sql: {}.",
clazz.getName(),
method.getName(),
sql);
}
}
}
@ -201,7 +209,7 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
handleAfterPrepareStatementMethod(advice, cost, isSuccess);
return;
}
if (advice.getTarget() instanceof java.sql.Statement) {
if (advice.getTarget() instanceof Statement) {
handleAfterStatementMethod(advice, cost, isSuccess);
}
} catch (Throwable e) {
@ -217,8 +225,9 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
}
if (STATEMENT_EXECUTE_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
StatementSqlContext sqlContext = getAndCheckSqlContext(advice);
if(sqlContext == null) return;
StatementSqlContext sqlContext = getAndCheckStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.exitExecute();
if (sqlContext.isExecuteStackEmpty()) {
statement2SqlMap.remove(advice.getTarget());
@ -230,19 +239,19 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
appendResult(advice, cost, isSuccess, sql, null, null, null);
}
} else if (STATEMENT_ADD_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
StatementSqlContext sqlContext = getAndCheckSqlContext(advice);
if(sqlContext == null) return;
String sql = (String) advice.getParams()[0];
StatementSqlContext sqlContext = getAndCheckStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.addBatch(sql);
} else if (STATEMENT_CLEAR_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
StatementSqlContext sqlContext = getAndCheckSqlContext(advice);
if(sqlContext == null) return;
StatementSqlContext sqlContext = getAndCheckStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.clearBatch();
} else if (STATEMENT_EXECUTE_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
StatementSqlContext sqlContext = getAndCheckSqlContext(advice);
if(sqlContext == null) return;
StatementSqlContext sqlContext = getAndCheckStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.exitExecute();
if (sqlContext.isExecuteStackEmpty()) {
@ -262,10 +271,10 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
}
}
private StatementSqlContext getAndCheckSqlContext(Advice advice){
private StatementSqlContext getAndCheckStatementSqlContext(Advice advice) {
StatementSqlContext sqlContext = statement2SqlMap.get(advice.getTarget());
if (sqlContext == null) {
logger.warn("sql context is null, target: {}, class: {}, method: {}, param length: {}",
logger.debug("sql context is null, target: {}, class: {}, method: {}, param length: {}",
advice.getTarget(),
advice.getTarget().getClass(),
advice.getMethod().getName(),
@ -276,26 +285,41 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
return sqlContext;
}
private void handleAfterPrepareStatementMethod(Advice advice, double cost, boolean isSuccess) throws ExpressException {
if (advice.getMethod().getTargetMethod() == null) {
return;
}
private PreparedStatementSqlContext getAndCheckPreparedStatementSqlContext(Advice advice) {
PreparedStatementSqlContext sqlContext = preparedStatement2SqlMap.get(advice.getTarget());
if (sqlContext == null) {
logger.warn("sql context is null, target: {}, class: {}, method: {}, param length: {}",
logger.debug("sql context is null, target: {}, class: {}, method: {}, param length: {}",
advice.getTarget(),
advice.getTarget().getClass(),
advice.getMethod().getName(),
advice.getMethod().getTargetMethod().getParameterTypes().length);
return null;
}
return sqlContext;
}
private void handleAfterPrepareStatementMethod(Advice advice, double cost, boolean isSuccess) throws ExpressException {
if (advice.getMethod().getTargetMethod() == null) {
return;
}
if (PREPARED_STATEMENT_SET_PARAM_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
PreparedStatementSqlContext sqlContext = getAndCheckPreparedStatementSqlContext(advice);
if (sqlContext == null) return;
Integer parameterIndex = (Integer) advice.getParams()[0];
sqlContext.setParam(parameterIndex, advice.getParams()[1]);
} else if (PREPARED_STATEMENT_EXECUTE_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
PreparedStatementSqlContext sqlContext = getAndCheckPreparedStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.exitExecute();
logger.debug("preparedStatement: {} exit execute. method: {}, class: {}",
advice.getReturnObj(),
advice.getMethod().getName(),
advice.getClazz().getName());
if (sqlContext.isExecuteStackEmpty()) {
statement2SqlMap.remove(advice.getTarget());
}
@ -305,11 +329,25 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
appendResult(advice, cost, isSuccess, sqlContext.getSql(), sqlContext.getParamsMap().values(), null, null);
}
} else if (PREPARED_STATEMENT_ADD_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
PreparedStatementSqlContext sqlContext = getAndCheckPreparedStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.addBatch();
} else if (STATEMENT_CLEAR_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
PreparedStatementSqlContext sqlContext = getAndCheckPreparedStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.clearBatch();
} else if (STATEMENT_EXECUTE_BATCH_METHOD_MAP.isMatch(advice.getMethod().getTargetMethod())) {
PreparedStatementSqlContext sqlContext = getAndCheckPreparedStatementSqlContext(advice);
if (sqlContext == null) return;
sqlContext.exitExecute();
logger.debug("preparedStatement: {} exit execute. method: {}, class: {}",
advice.getReturnObj(),
advice.getMethod().getName(),
advice.getClazz().getName());
if (sqlContext.isExecuteStackEmpty()) {
statement2SqlMap.remove(advice.getTarget());
}
@ -334,6 +372,8 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
preparedStatement2SqlMap.put((PreparedStatement) advice.getReturnObj(),
new PreparedStatementSqlContext(String.valueOf(advice.getParams()[0])));
}
logger.debug("build prepareStatement: {}", advice.getReturnObj());
}
if ("createStatement".equals(advice.getMethod().getName())) {
@ -342,6 +382,8 @@ class SqlProfilerAdviceListener extends AdviceListenerAdapter {
statement2SqlMap.put((Statement) advice.getReturnObj(),
new StatementSqlContext());
}
logger.debug("build statement: {}", advice.getReturnObj());
}
}

Loading…
Cancel
Save