gpt4 book ai didi

java - 记录与数据库通信的 SQL

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:38 32 4
gpt4 key购买 nike

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

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

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

  1. jdbcdslog-exp
  2. P6Spy
  3. JdbcProxy
  4. log4jdbc
  5. SqlRecorder

我具体寻找什么:

  1. 纯 SQL 查询,几乎没有垃圾(例如触发查询的时间 jdbcdslog-exp recorded data)
  2. 如果我收到一些不需要的数据,我希望能够将其删除以生成纯查询。我试图弄清楚 jdbcdslog 是如何做到这一点的,但很难让它发挥作用。
  3. 我想知道上述工具是否可以为我们提供一些有关查询的元数据(例如查询属于哪个包),以便我可以按包分离出日志数据。

最佳答案

对于这样的情况,我使用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>

关于java - 记录与数据库通信的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939376/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com