Я использую HSQLDB в своем приложении. Теперь мне нужно зарегистрировать каждый выполненный sql-оператор. Я не хочу самостоятельно обрабатывать SQL-протоколирование. Есть ли стандартный способ сделать это изнутри HSQLDB?протоколирование SQL-выражений изнутри HSQLDB
ответ
HSQLDB 2.2.x поддерживает ведение журнала SQL. Предположим, что ваша база данных называется test
и Вы подключаетесь, используя URL JDBC jdbc:hsqldb:file:test
test.log является журнал изменений данных используется внутри HSQLDB. Он не содержит операторов SELECT. Он создается и удаляется HSQLDB. Это не то, что вы ищете.
test.sql.log - это журнал, содержащий все операторы SQL с информацией о времени и сеансе, а также любые аргументы для подготовленных операторов. Этот журнал создан при использовании:
SET DATABASE СОБЫТИЙ 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')
Вы можете использовать hsqldb.sqllog = 3 на URL
- test.sql.app.log - это журнал, содержащий записи для внутренних операций сохранения. Это не связано с исполняемыми операциями SQL.
смотрите руководство здесь и проверить синтаксис команды и свойства в конце главы:
http://hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_monitoring_operation
Не определен HSQLDB, но если ваш клиент использует JDBC, возможно, самым простым способом регистрации SQL-операторов является использование оболочки драйвера JDBC. Есть много implementations на выбор.
Я рассматриваю такого рода решения, но моя цель состоит в том, чтобы избежать введения новых libraies в мой проект. –
ОК. Я использовал только для написания аспектов для JDBC Connection/Statement/PreparedStatement для аналогичной цели и для их подключения через Spring Interceptors, если вы используете Sprint. Это всего лишь несколько классов, и на самом деле это не так сложно. – maximdim
На самом деле этот проект для меня большой, чтобы все понять. Мы используем Spring, но у меня нет опыта в этом. Весенний код был написан кем-то другим. И у меня нет времени учиться сейчас. Мы также используем Hibernate и Log4J. Мое самое близкое предположение, как решить мою задачу - включить ведение журнала SQL и параметров, а затем перенаправить этот журнал в файл назначения. –
- 1. SLF4J протоколирование не протоколирование в файл в wildfly
- 2. Tomcat - HSQLDB
- 3. hsqldb indexOutOfBoundException
- 4. свойства HSQLDB
- 5. Менеджер HSQLDB?
- 6. Mysqld и протоколирование запросов
- 7. Странно AQDefaultDevice протоколирование
- 8. QuickFix/N производительность протоколирование
- 9. протоколирование - изменение реализации?
- 10. Cassandra Java протоколирование драйвер
- 11. phpMyAdmin - протоколирование клиентских запросов?
- 12. log4net и noSQL протоколирование
- 13. py.test: протоколирование числа сбоев
- 14. PHP протоколирование 403 ошибок
- 15. Spring Integration протоколирование ошибок
- 16. Параллельный MATLAB и протоколирование
- 17. Mute Stanford coreNLP протоколирование
- 18. протоколирование (запись) событий программы
- 19. Python Параллельное протоколирование прочитано
- 20. Глобальное протоколирование Python
- 21. Weblogic 10.3 протоколирование реализации
- 22. Отключить протоколирование 404 Ошибки
- 23. Код разработки и протоколирование
- 24. Метод доступа пользователей протоколирование
- 25. ASP.NET Core 1.0 протоколирование
- 26. PySpark протоколирование от исполнителя
- 27. Включить протоколирование метро/трубки
- 28. Как игнорировать протоколирование
- 29. Python, протоколирование и дизайн
- 30. WinRT протоколирование в файл
Если моя база данных зашифрована, существует ли стандартный способ включения шифрования SQL-журнала? –
Нет, но для этого легко изменить источник. См. Класс org.hsqldb.lib.SimpleLog. – fredt
спасибо большое !! '' SET DATABASE EVENT LOG SQL LEVEL 3'' работает как шарм! – Zarathustra