From bbd241a6548f13215ae7c4609877c504bd3363d0 Mon Sep 17 00:00:00 2001 From: kerry8899 <372822716@qq.com> Date: Thu, 23 Mar 2017 22:24:01 +0800 Subject: [PATCH] =?UTF-8?q?SQL=E5=BC=82=E5=B8=B8=E6=97=B6,=20=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E5=8F=AF=E6=89=A7=E8=A1=8C=E7=9A=84SQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SQL异常时, 输出可执行的SQL, 并是否输出可执行SQL受配置参数statementExecutableSqlLogEnable的约束 --- .../druid/filter/logging/LogFilter.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alibaba/druid/filter/logging/LogFilter.java b/src/main/java/com/alibaba/druid/filter/logging/LogFilter.java index 98caf034a7..58e8fea43d 100644 --- a/src/main/java/com/alibaba/druid/filter/logging/LogFilter.java +++ b/src/main/java/com/alibaba/druid/filter/logging/LogFilter.java @@ -750,8 +750,28 @@ public abstract class LogFilter extends FilterEventAdapter implements LogFilterM @Override protected void statement_executeErrorAfter(StatementProxy statement, String sql, Throwable error) { if (this.isStatementLogErrorEnabled()) { - statementLogError("{conn-" + statement.getConnectionProxy().getId() + ", " + stmtId(statement) + if (!isStatementExecutableSqlLogEnable()) { + statementLogError("{conn-" + statement.getConnectionProxy().getId() + ", " + stmtId(statement) + "} execute error. " + sql, error); + }else{ + int parametersSize = statement.getParametersSize(); + if (parametersSize > 0) { + List parameters = new ArrayList(parametersSize); + for (int i = 0; i < parametersSize; ++i) { + JdbcParameter jdbcParam = statement.getParameter(i); + parameters.add(jdbcParam != null + ? jdbcParam.getValue() + : null); + } + String dbType = statement.getConnectionProxy().getDirectDataSource().getDbType(); + String formattedSql = SQLUtils.format(sql, dbType, parameters, this.statementSqlFormatOption); + statementLogError("{conn-" + statement.getConnectionProxy().getId() + ", " + stmtId(statement) + + "} execute error. " + formattedSql, error); + }else{ + statementLogError("{conn-" + statement.getConnectionProxy().getId() + ", " + stmtId(statement) + + "} execute error. " + sql, error); + } + } } }