通常在java项目开发为了防止sql注入我们通常都采用的预编译的sql,采用“?”号挂参,如下:

SELECT * FROM blog WHERE id = ?

往往在开发测试阶段能获取到完整的可执行的sql能帮我们及时的发现和定位问题。就有了很多朋友使用log4jdbc来记录SQL信息。

Druid中LogFilter的配置项

如下图我们可以看到有一项statementExecutableSqlLogEnable默认为false

配置

这里我们以JFinal和Log4j最为演示的例子。

java代码

// 配置Druid数据库连接池插件
DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl, user, password);

// 配置log插件
Log4jFilter logFilter = new Log4jFilter();
logFilter.setStatementLogEnabled(false);
logFilter.setStatementLogErrorEnabled(true);
logFilter.setStatementExecutableSqlLogEnable(true);

druidPlugin.addFilter(logFilter);

log4j.properties中添加

log4j.logger.druid.sql.Statement=DEBUG

druid中支持的日志Filter

Log4jFilter
Slf4jLogFilter
Log4j2Filter
CommonsLogFilter