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); + } + } } }