• ORACLE在存储过程中记录日志的处理包


       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;


    三、使用

    只要在需要进行记录日志的时候调用:PKG_LOG.INFO(‘日志标题’,‘日志内容’)即可,和LOG4J的使用一致。
     

    四、扩展和完善

    1.可以做一个界面,对日志表进行查询,可以更方便查看日志,并可通过查询是否有ERROR日志,判断指定的的存储过程运行是否正常。
    2.由于日志是记录在数据库中,所以需要建立一个定时任务,将DEBUG或INFO的数据,通过日志时间删除掉,以保证日志表里的数据不会过度增长。
  • 相关阅读:
    [置顶] win7 && win8 下安装SqlServer 2008出现错误无法将对象实例化的问题
    [置顶] sizeof()和c++中变量们
    [置顶] sql2008 附加数据库 .mdf 出现错误 解决方案
    [置顶] 漂亮的 tab 样式
    [置顶] 认识指针和指针变量
    [置顶] SqlHelper类
    [置顶] 第一次使用事物 利用线性表
    [置顶] 设计模式之单例模式 (Design patterns of the The singleton pattern)c#
    [置顶] ListBox控件的数据绑定
    RedHat 6.0(64位)如何使用CentOS YUM源更新的方法
  • 原文地址:https://www.cnblogs.com/xinxin1994/p/5468212.html
Copyright © 2020-2023  润新知