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