小编典典

记录与数据库通信的SQL

java

我正在为我的Web应用程序使用SQL
Logger。我希望能够记录由用户与GUI交互触发的SQL查询。我在Spring环境中工作,与Maven和Mybatis一起工作。我将Web应用程序打包成一个战争,并将其部署到tomcat上。

我希望能够直接使用SQL来访问数据库。我可以尝试像在Log4j中那样使用SocketAppender /
HTMLAppender,并发布查询,以便其他非SQL用户无需编辑即可直接使用它,也可以从查询中删除垃圾以查看填充的数据。

我遇到了几种可以记录SQL的Logger工具。

  1. jdbcdslog-exp
  2. P6间谍
  3. JdbcProxy
  4. log4jdbc
  5. SqlRecorder

我特别想要的是:

  1. 纯SQL查询,几乎没有垃圾或没有垃圾(例如,查询被触发的时间jdbcdslog-exp记录的数据
  2. 如果我得到一些不需要的数据,我希望能够将其删除以生成纯查询。我试图弄清楚jdbcdslog是如何做到的,但是很难使它工作。
  3. 我想知道以上任何工具是否可以为我们提供有关查询的一些元数据(例如查询所属的程序包),以便我可以按程序包分离出日志数据。

阅读 225

收藏
2020-11-23

共1个答案

小编典典

我在这种情况下使用 jdbcdslog-exp

jdbcdslog-1.0.6.2.jar 添加到类路径。

为log4j配置添加类别(如果需要,也可以为ResultSetLogger设置INFO-谨防OutOfMemory)

<category name="org.jdbcdslog.StatementLogger">
  <priority value="INFO"/>
</category>  
<category name="org.jdbcdslog.ResultSetLogger">
  <priority value="FATAL"/>
</category>

如果需要在运行时切换语句日志记录,则可以使用以下命令启动log4j

PropertyConfigurator.configureAndWatch("log4j.xml", 60000);

更改您的jdbc连接参数(此处为jboss中的hsql示例)

<connection-url>jdbc:hsqldb:hsql://localhost:1801</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>

<connection-url>jdbc:jdbcdslog:hsqldb:hsql://localhost:1801;targetDriver=org.hsqldb.jdbcDriver</connection-url>
<driver-class>org.jdbcdslog.DriverLoggingProxy</driver-class>
2020-11-23