前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle存储过程实现记录日志

Oracle存储过程实现记录日志

作者头像
星哥玩云
发布2022-08-18 20:14:34
9110
发布2022-08-18 20:14:34
举报
文章被收录于专栏:开源部署开源部署

Oracle存储过程实现记录日志

create table -- Create table create table t_cem_proc_logs (   id      varchar2(32),   proc_mc  varchar2(100),   title    varchar2(4000),   content  clob,   log_type varchar2(10),   log_time date default sysdate ) ; -- Add comments to the table comment on table t_cem_proc_logs   is '日志'; -- Add comments to the columns comment on column t_cem_proc_logs.id   is 'id'; comment on column t_cem_proc_logs.proc_mc   is '过程名'; comment on column t_cem_proc_logs.title   is '标题'; comment on column t_cem_proc_logs.content   is '内容'; comment on column t_cem_proc_logs.log_type   is '日志级别:info,error,debug'; comment on column t_cem_proc_logs.log_time   is '时间'; -- Create/Recreate primary, unique and foreign key constraints alter table t_cem_proc_logs   add constraint pri_proc_logs primary key (ID);

-- Create table create table T_CEM_TASK_LOG (   id          VARCHAR2(32) not null,   task_id      VARCHAR2(100),   task_code    VARCHAR2(100),   start_date  DATE,   end_date    DATE,   log_status  VARCHAR2(2),   log_message  VARCHAR2(4000),   createdate  DATE,   requestdata  CLOB,   responsedata CLOB,   modifytime  DATE,   corpid      VARCHAR2(32) ); -- Add comments to the table comment on table T_CEM_TASK_LOG   is '调度日志'; -- Add comments to the columns comment on column T_CEM_TASK_LOG.id   is 'ID'; comment on column T_CEM_TASK_LOG.task_id   is '调度标识'; comment on column T_CEM_TASK_LOG.task_code   is '调度任务代码'; comment on column T_CEM_TASK_LOG.start_date   is '开始执行时间'; comment on column T_CEM_TASK_LOG.end_date   is '执行结束时间'; comment on column T_CEM_TASK_LOG.log_status   is '状态 0:执行中 1:执行完成 2:执行错误'; comment on column T_CEM_TASK_LOG.log_message   is '日志信息'; comment on column T_CEM_TASK_LOG.createdate   is '创建日期'; comment on column T_CEM_TASK_LOG.requestdata   is '请求报文'; comment on column T_CEM_TASK_LOG.responsedata   is '返回报文'; comment on column T_CEM_TASK_LOG.modifytime   is '修改时间'; comment on column T_CEM_TASK_LOG.corpid   is '企业id'; -- Create/Recreate indexes create index T_CEM_TASK_LOG_N1 on T_CEM_TASK_LOG (TASK_ID); -- Create/Recreate primary, unique and foreign key constraints alter table T_CEM_TASK_LOG   add constraint T_CEM_TASK_LOG_PK primary key (ID);

Create sequence -- Create sequence create sequence seq_log minvalue 1 maxvalue 99999999 start with 1 increment by 1 cache 20 cycle;

package CREATE OR REPLACE PACKAGE LOGUTILS IS

 -- Author  : DYB  -- Created : 2017/3/28 10:34:51  -- Purpose : 日志记录工具类

 --日志  PROCEDURE LOG(P_TASK_ID    VARCHAR2,         P_TASK_CODE  VARCHAR2,         P_START_DATE  DATE DEFAULT NULL,         P_END_DATE    DATE DEFAULT NULL,         P_LOG_STATUS  VARCHAR2 DEFAULT NULL,         P_LOG_MESSAGE VARCHAR2 DEFAULT NULL);   PROCEDURE INFO(p_proc_name varchar2, title varchar2, content clob);   PROCEDURE DEBUG(p_proc_name varchar2, title varchar2, content clob);              PROCEDURE ERROR(p_proc_name varchar2, title varchar2, content clob); END LOGUTILS;

body CREATE OR REPLACE PACKAGE BODY LOGUTILS IS

 --日志  PROCEDURE LOG(P_TASK_ID    VARCHAR2,         P_TASK_CODE  VARCHAR2,         P_START_DATE  DATE DEFAULT NULL,         P_END_DATE    DATE DEFAULT NULL,         P_LOG_STATUS  VARCHAR2 DEFAULT NULL,         P_LOG_MESSAGE VARCHAR2 DEFAULT NULL) IS   PRAGMA AUTONOMOUS_TRANSACTION;   V_COUNT NUMBER;  BEGIN   SELECT COUNT(1)    INTO V_COUNT    FROM T_CEM_TASK_LOG T   WHERE T.TASK_ID = P_TASK_ID     AND T.TASK_CODE = P_TASK_CODE;   IF V_COUNT = 0 THEN    INSERT INTO T_CEM_TASK_LOG     (ID,     TASK_ID,     TASK_CODE,     START_DATE,     END_DATE,     LOG_STATUS,     LOG_MESSAGE,     CREATEDATE)    VALUES     (CEM_TASK_LOG_S.NEXTVAL,     P_TASK_ID,     P_TASK_CODE,     P_START_DATE,     P_END_DATE,     P_LOG_STATUS,     P_LOG_MESSAGE,     SYSDATE);   ELSE    UPDATE T_CEM_TASK_LOG     SET END_DATE    = P_END_DATE,       LOG_STATUS  = P_LOG_STATUS,       LOG_MESSAGE = P_LOG_MESSAGE     WHERE TASK_ID = P_TASK_ID     AND TASK_CODE = P_TASK_CODE;   END IF;   COMMIT;  END LOG;   /*记录消息*/   PROCEDURE INFO(p_proc_name varchar2, title varchar2, content clob) is     PRAGMA AUTONOMOUS_TRANSACTION;   begin     INSERT INTO t_cem_proc_logs(id,proc_mc,title,content, log_type,log_time)     VALUES ('LOG'||to_char(sysdate,'YYYYMMDD')||lpad(SEQ_log.NEXTVAL,8,'0'), upper(p_proc_name), substr(title,1,4000), content, 'INFO',sysdate);     COMMIT;   EXCEPTION WHEN OTHERS THEN NULL;   ROLLBACK;   END;   /*记录测试*/   PROCEDURE DEBUG(p_proc_name varchar2, title varchar2, content clob) is     PRAGMA AUTONOMOUS_TRANSACTION;   begin     INSERT INTO t_cem_proc_logs(id,proc_mc,title,content, log_type,log_time)     VALUES ('LOG'||to_char(sysdate,'YYYYMMDD')||lpad(SEQ_log.NEXTVAL,8,'0'), upper(p_proc_name), substr(title,1,4000), content, 'DEBUG',sysdate);     COMMIT;   EXCEPTION WHEN OTHERS THEN NULL;   ROLLBACK;   END;   /*记录错误*/   PROCEDURE ERROR(p_proc_name varchar2, title varchar2, content clob) is     PRAGMA AUTONOMOUS_TRANSACTION;   begin     INSERT INTO t_cem_proc_logs(id,proc_mc,title,content, log_type,log_time)     VALUES ('LOG'||to_char(sysdate,'YYYYMMDD')||lpad(SEQ_log.NEXTVAL,8,'0'), upper(p_proc_name), substr(title,1,4000), content, 'ERROR',sysdate);     COMMIT;   EXCEPTION WHEN OTHERS THEN NULL;   ROLLBACK;   END; END LOGUTILS;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档