基于级别的Oracle日志记录

时间:2010-09-22 10:02:59

标签: oracle logging log-level

我是Kanagaraj。在我们的存储过程中,我们将消息记录在500个位置,并且日志存储在我们遇到性能问题的表中。我们需要将这些消息拆分为Debug,Info和Error消息。根据级别,只应记录有限的消息。如有必要,我们将启用下一级别并查看更多日志。在我们的程序中引入这种基于级别的日志记录的有效方法是什么?。

提前致谢。

Kanagaraj。

4 个答案:

答案 0 :(得分:3)

像这样......

create or replace package logger as
  min_level number := 2;
  procedure ins_log(level number, message varchar2);
end;

create or replace package body logger as
  procedure ins_log(level number, message varchar2) is
    pragma autonomous_transaction;
  begin
    if level>=min_level then
      insert into loggin(ts, msg) values (sysdate, message);
    end if;
    commit; // autonomous_transaction requires that
  end;
end;

编辑:添加了pragma autonomous_transaction;,感谢Adam

答案 1 :(得分:2)

可以在sourceforge上找到适用于Oracle PL / SQL的log4j端口。这允许在各个级别启用/禁用日志记录,并且对于特定的包/功能/过程,只需修改配置。它还支持重定向到不同的目的地。

答案 2 :(得分:1)

有点晚了;我建议您使用Logger:https://github.com/tmuth/Logger---A-PL-SQL-Logging-Utility它将满足您的要求。

答案 3 :(得分:0)

https://sourceforge.net/p/plj-logger/home/查看PLJ-Logger。它非常容易实现,并具有您想要的功能和更多功能。 PL / SQL代码中内置的适当日志记录将对其进行转换。

P