我希望在我们现有的Oracle应用程序中引入一个日志框架,来替换使用DBMS_OUTPUT。
该框架主要用于调试,包括记录开始x过程、参数详细信息、结束过程x等。它还应具有按程序单元打开或关闭功能,具有各种级别的跟踪功能,实际上是标准日志记录功能。
实现这些要求应该相对简单,但我需要你的帮助来确定如何最好地打开和关闭此功能。我的目标是在关闭跟踪时尽可能减少性能损失,这应该是大多数情况下都需要的!
由于应用程序使用10g release 2,起初我喜欢将日志机制包装在条件编译中,以便在正常运行期间甚至看不到日志框架。不幸的是,我不得不放弃这个想法,因为大多数应用程序都是使用独立的过程和函数构建的,因此打开日志功能可能会使大量代码无效。
我已经查看了几个现有的开源和其他框架/功能以获取灵感:
log4plsql (http://log4plsql.sourceforge.net/)
APC的评论here,特别是在可接受的影响下,让我感到担忧。
OraLog项目 (http://oralog.sourceforge.net)
自2007年以来没有更新
PL/VISION (here)
看起来很老,自Oracle 8i以来没有更改?
询问Tom的仪表化 (这里)
更新于2014年1月4日 Tom Kyte 现在推荐 Tyler Muth 的 Logger
如果您已经在Oracle应用程序中引入了某种形式的日志记录,我会非常感兴趣听听您的经验,包括您如何实现它以及尤其是如何控制它。