Я собираюсь ввести каркас ведения журнала в наше существующее приложение Oracle, чтобы заменить использование DBMS_OUTPUT.
Фреймворк будет использоваться в первую очередь для облегчения отладки и будет детализировать такие вещи, как запуск процедуры x, детали параметров, завершение процедуры x и т. Д. Он также должен иметь функциональность, которая должна быть включена для всех или только для одного программного модуля, различных Уровни трассировки на самом деле, что в значительной степени стандартная функциональность регистрации.
Реализация этих требований должна быть относительно простой, однако, где я хотел бы, чтобы ваша помощь заключалась в том, как лучше всего включить и выключить эту функцию. Я пытаюсь добиться наименьшего возможного снижения производительности при отключении трассировки. Который, надеюсь, должен быть большую часть времени!
Поскольку приложение использует 10g, выпуск 2, мне изначально понравился внешний вид механизма протоколирования внутри условной компиляции, так что структура журналирования даже не видна при нормальной работе. К сожалению, мне пришлось неохотно отказаться от этой идеи, так как большая часть приложения построена с использованием автономных процедур и функций, поэтому включение функции ведения журнала может потенциально сделать недействительным большое количество кода.
Я посмотрел несколько существующих с открытым исходным кодом и другие фреймворки \ функциональность для вдохновения:
log4plsql (http://log4plsql.sourceforge.net/)
Обзор APC здесь особенно под приемлемым воздействием вызывает у меня беспокойство.
Проект OraLog (http://oralog.sourceforge.net)
Нет обновлений с 2007 года
PL / VISION ( здесь )
Выглядит довольно старым, никаких изменений со времен Oracle 8i?
Спросите Тома Instrumentation ( здесь )
Обновление 01/04/2014
Tom Kyte теперь рекомендует Tyler Muth's Logger
Мне было бы очень интересно услышать ваш опыт, если вы ввели некоторую форму входа в свое приложение Oracle, как вы реализовали это и особенно, как вы им управляете.