记录与数据库通信的SQL
我正在为我的Web应用程序开发SQL Logger。 我希望能够记录用户与GUI交互触发的SQL查询。 我在Spring环境中工作,使用maven和mybatis。 我将我的webapp打包成战争并将其部署到tomcat上。
我希望能够直接使用SQL来访问数据库。 我可以尝试使用像Log4j中的SocketAppender / HTMLAppender,并发布查询,以便其他非SQL人员可以直接使用它而无需编辑它,或者从查询中删除垃圾以查看填充的数据。
我遇到了几个可以记录SQL的Logger工具。
- jdbcdslog-EXP
- P6SPY
- JdbcProxy
- log4jdbc
- SqlRecorder
我特别想要的是:
- 纯SQL查询几乎没有或几乎没有垃圾(比如查询被触发的时间jdbcdslog-exp记录的数据 )
- 如果我得到一些不需要的数据,我希望能够将其删除以生成纯查询。 我正在试图弄清楚jdbcdslog是如何做到这一点的,但是很难让它成功。
- 我想知道上述任何工具是否可以为我们提供有关查询的一些元数据(例如查询所属的包),以便我可以根据包分离出我的日志数据。
我使用jdbcdslog-exp这样的情况。
将jdbcdslog-1.0.6.2.jar添加到classpath。
将类别添加到log4j配置(如果需要,也为ResultSetLogger设置INFO – 小心OutOfMemory)
如果您需要通过运行时切换语句日志记录,则可以使用以下命令启动log4j
PropertyConfigurator.configureAndWatch("log4j.xml", 60000);
更改你的jdbc连接参数(这里是jboss中hsql的例子)
从
jdbc:hsqldb:hsql://localhost:1801 org.hsqldb.jdbcDriver
至
jdbc:jdbcdslog:hsqldb:hsql://localhost:1801;targetDriver=org.hsqldb.jdbcDriver org.jdbcdslog.DriverLoggingProxy