从HSQLDB中记录SQL表达式

Ale*_*ets 6 logging hsqldb

我在我的应用程序中使用HSQLDB.现在我需要记录每个执行的sql语句.我不想自己处理SQL日志.在HSQLDB中有没有一种标准的方法呢?

fre*_*edt 11

HSQLDB 2.2.x支持SQL日志记录.假设您的数据库已命名,test并且您使用JDBC URL进行连接jdbc:hsqldb:file:test

  1. test.log是HSQLDB内部使用的数据更改日志.它不包含SELECT语句.它由HSQLDB创建和删除.这不是你想要的.

  2. test.sql.log是包含所有带有时间和会话信息的SQL语句以及预准备语句的任何参数的日志.如果使用以下内容,则会创建此日志

    SET DATABASE EVENT LOG SQL LEVEL 3

它包含以下条目:

2012-02-08 22:19:36.484 DETAIL 4 CALL USER() 
2012-02-08 22:19:36.484 DETAIL 4 call database_version() 
2012-02-08 22:19:36.484 DETAIL 4 COMMIT 
2012-02-08 22:19:36.500 DETAIL 4 INSERT INTO Customer VALUES(0,'Laura','Steel','429 Seventh Av.','Dallas') 
Run Code Online (Sandbox Code Playgroud)

您可以在URL上使用hsqldb.sqllog = 3

  1. test.sql.app.log是包含内部持久性操作的条目的日志.这与执行的SQL语句无关.

请参阅此处的指南并查看本章末尾的命令和属性语法:

http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_monitoring_operation

  • 在连接 url (`jdbc:hsqldb:mem:foo;hsqldb.sqllog=3;`) 中添加属性后,我终于在控制台输出中得到了这个 SQL 语句 (2认同)