首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PL/SQL日志记录-如何控制?

PL/SQL日志记录-如何控制?
EN

Stack Overflow用户
提问于 2009-08-05 09:55:40
回答 4查看 35.5K关注 0票数 21

我希望在我们现有的Oracle应用程序中引入一个日志框架,以取代DBMS_OUTPUT的使用。

该框架将主要用于辅助调试,并将详细说明启动x过程、参数细节、结束过程x等内容。它还应该为所有或仅仅一个程序单元打开功能,不同级别的跟踪实际上是标准日志功能。

实现这些需求应该相对简单,但是我希望您的帮助是如何最好地关闭和打开此功能。当跟踪被关闭时,我试图实现的是最小的性能命中。希望大多数时候都是如此!

由于应用程序使用的是10g版本2,我最初喜欢将日志机制封装在条件编译中,这样日志框架在正常操作中甚至是不可见的。不幸的是,我不得不勉强放弃这个想法,因为大多数应用程序都是使用独立的过程和函数构建的,因此打开日志功能可能会使许多代码失效。

我已经查看了几个现有的开源资源和其他框架\功能,以获得灵感:

(http://log4plsql.sourceforge.net/) log4plsql

APC的评论这里,特别是在可接受的影响下,让我感到担忧。

OraLog项目(http://oralog.sourceforge.net )

自2007年以来没有任何更新

PL/VISION (这里)

看起来很老了,自从Oracle8i之后没有变化?

问汤姆仪器仪表 (这里)

更新01/04/2014 汤姆·凯特现在推荐泰勒·穆斯的记录器

如果您在Oracle应用程序中引入了某种形式的登录,您是如何实现它的,尤其是如何控制它,我将非常感兴趣地了解您的经验。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-05 13:07:44

您提到了放弃条件编译的想法,因为潜在的级联失效-有一种方法有点类似,如果您愿意接触PL/SQL源代码,在那里需要日志记录/跟踪不涉及重新编译来启用。

您仍然可以将自己选择的名称/值对添加到PLSQL_CCFLAGS,并让应用程序代码对v$参数进行相对轻量级的查询,以确定日志是否“打开”。最简单的实现将是一个名称/值对,但您可以将其扩展到不同的特定于模块的对,这样日志记录就可以以更细的粒度打开。

编辑这里有一个非常简单的例子来响应您的评论/请求--您显然希望在解析PLSQL_CCFLAGS字符串时更加复杂,以防它有其他现有的信息,比如包装成一个函数,等等:

代码语言:javascript
复制
create or replace procedure ianc_cc
is
cc_flag_val varchar2(4000);
begin 
-- need direct select grant on v_$parameter for this...
select value into cc_flag_val 
  from v$parameter where name = 'plsql_ccflags';
if (cc_flag_val = 'custom_logging:true') then
  dbms_output.put_line('custom logging is on'); 
else  
  dbms_output.put_line('custom logging is off'); 
end if;
end;
/

现在,作为有权发出ALTER的用户:

更改系统集PLSQL_CCFLAGS=“定制_日志:true”;

然后向后切换:

更改系统集PLSQL_CCFLAGS='';

票数 8
EN

Stack Overflow用户

发布于 2013-07-19 07:46:54

查看相同的问题,并发现以下项目似乎仍处于活动状态,https://github.com/tmuth/Logger---A-PL-SQL-Logging-Utility

票数 5
EN

Stack Overflow用户

发布于 2009-08-05 12:24:22

在我们的应用程序中,我们大量使用了Ask的调试器。有一件事我很快就注意到了,那就是“调试器”被问得太多了,看不出是否每条日志消息都有日志记录。我对它进行了修改,每100条日志消息只检查一次表,现在它运行得很好。

我的重点是尽量避免检查每个日志消息的表,以确定是否应该输出它。通常,您希望在长时间运行的过程中打开日志记录,所以您可以这样做很重要。在我的例子中,我决定我可以忍受等待几秒钟,直到100个日志记录调用过去之后,它才真正注意到日志被打开。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1232246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档