当前位置: 首页 > 面试题库 >

记录与数据库通信的SQL

卫和洽
2023-03-14
问题内容

我正在为我的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. 我想知道以上任何工具是否可以为我们提供有关查询的一些元数据(例如查询所属的程序包),以便我可以按程序包分离出日志数据。

问题答案:

我在这种情况下使用 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>


 类似资料:
  • 从(在文件中)开始,一直到模式,我几乎尝试了任何名称空间,但我看到的只是如下所示: 这年头有办法做到这一点吗?

  • 问题内容: 我已经开始在一个拥有数以百计的表和视图的数据库的地方工作,所有这些表和视图都具有隐秘的名称,只有很少的元音,并且没有文档。它们也不允许对数据库架构进行无谓的更改,我也不能触摸任何数据库,除非要在我自己的计算机上进行测试(该数据库会被删除并定期重新创建),因此我无法添加对任何人都有用的注释。 我尝试使用“ Toad”创建一个ER图,但是连续运行48小时后,它仍然看不到任何可见的东西,我需

  • 问题内容: 我正在寻找一种让python记录器模块登录数据库并在数据库关闭时回退到文件系统的方法。 所以基本上有两件事:如何让记录器记录到数据库,以及当数据库关闭时如何使记录器记录到文件中。 问题答案: 给自己编写一个将日志定向到相关数据库的 处理程序 。当它失败时,您可以将其从记录器的处理程序列表中删除。有许多方法可以处理故障模式。

  • 尝试站点parse.com将数据加载到数据库中 类DBHelper扩展了SQLiteOpenHelper{ 在模拟器上获取 java.lang.IllegalStateExcema:尝试重新打开已关闭的对象:SQLiteDatabase: /data/data/com.project.test/databases/myDBandroid.database.sqlite.SQLiteClosable

  • 我有一个如下的实体 错误消息实体如下所示 我使用hibernate标准从数据库中获取所有记录 @SuppressWarnings(“unchecked”) @Override 公共列表listTableOneEntites() { 标准条件=getSession().createCriteria(TableOneEntity.class); 返回(列表)标准。列表(); } 当我打印列表的大小时,

  • 我有一个包含以下列的表格: 表在在线数据库中。我使用dataset.xsd文件和连接字符串在客户端和在线数据库之间进行通信。 以下是我使用的一些方法: