时间:2021-07-01 10:21:17 帮助过:2人阅读
Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见。
为了能给运维人员查看到相关日志,日志最好记录在表中,表信息如下:
其中序号并不是必须的,日志级别参考了LOG4J的日志类型,但没有全部拿过来,只是将常用的几个拿过来了。
实现就是按照表结构插入数据了,这里为了更方便一些,定义了一个包,插入时对字段进行了长度4000的截取,详细如下:
[sql]
create or replace package body PKG_LOG is
/*存储过程记录日志*/
/*记录消息*/
PROCEDURE INFO(p_proc_name varchar2, title varchar2, content varchar2) is
begin
INSERT INTO t_proc_logs(xh,proc_mc,title,content, log_type,log_time)
VALUES (SEQ_T_PROC_LOGS_XH.NEXTVAL, upper(p_proc_name), substr(title,1,4000), substr(content,1,4000), ‘INFO‘,sysdate);
COMMIT;
EXCEPTION WHEN OTHERS THEN
NULL;
ROLLBACK;
END;
/*记录测试*/
PROCEDURE DEBUG(p_proc_name varchar2, title varchar2, content varchar2) is
begin
INSERT INTO t_proc_logs(xh,proc_mc,title,content, log_type,log_time)
VALUES (SEQ_T_PROC_LOGS_XH.NEXTVAL, upper(p_proc_name), substr(title,1,4000), substr(content,1,4000), ‘DEBUG‘,sysdate);
COMMIT;
EXCEPTION WHEN OTHERS THEN
NULL;
ROLLBACK;
END;
/*记录错误*/
PROCEDURE ERROR(p_proc_name varchar2, title varchar2, content varchar2) is
begin
INSERT INTO t_proc_logs(xh,proc_mc,title,content, log_type,log_time)
VALUES (SEQ_T_PROC_LOGS_XH.NEXTVAL, upper(p_proc_name), substr(title,1,4000), substr(content,1,4000), ‘ERROR‘,sysdate);
COMMIT;
EXCEPTION WHEN OTHERS THEN
NULL;
ROLLBACK;
END;
end PKG_LOG;
ORACLE在存储过程中记录日志的处理包
标签: