ORACLE在存储过程中记录日志的处理包
2015-01-22 16:16
387 查看
JAVA开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见。
其中序号并不是必须的,日志级别参考了LOG4J的日志类型,但没有全部拿过来,只是将常用的几个拿过来了。
相关源码下载地址:http://download.csdn.net/detail/hereyouare/8380443
2.由于日志是记录在数据库中,所以需要建立一个定时任务,将DEBUG或INFO的数据,通过日志时间删除掉,以保证日志表里的数据不会过度增长。
一、表结构
为了能给运维人员查看到相关日志,日志最好记录在表中,表信息如下:其中序号并不是必须的,日志级别参考了LOG4J的日志类型,但没有全部拿过来,只是将常用的几个拿过来了。
二、实现
实现就是按照表结构插入数据了,这里为了更方便一些,定义了一个包,插入时对字段进行了长度4000的截取,详细如下: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的使用一致。相关源码下载地址:http://download.csdn.net/detail/hereyouare/8380443
四、扩展和完善
1.可以做一个界面,对日志表进行查询,可以更方便查看日志,并可通过查询是否有ERROR日志,判断指定的的存储过程运行是否正常。2.由于日志是记录在数据库中,所以需要建立一个定时任务,将DEBUG或INFO的数据,通过日志时间删除掉,以保证日志表里的数据不会过度增长。
相关文章推荐
- ORACLE在存储过程中记录日志的处理包
- 转:自动记录数据库存储过程的更新和改变,并产生日志
- oracle 在存储过程自定义异常的处理方法
- oracle 存储过程记录
- [置顶] oracle存储过程中单引号及字符串拼接处理
- Oracle 存储过程异常处理
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- ORACLE 8i 的存储过程里面 select aaa into var1 from tablea 如果记录为空,会出错.怎么解决
- oracle 存储过程记录
- 关于Oracle存储过程中的IN子句传参的问题(不能直接传字符串,需要处理)
- oracle存储过程一(返回单条记录的值)
- Oracle 存储过程脚本 插入十万条记录
- Oracle 通过存储过程删除两个表中符合条件的记录
- oracle 存储过程循环插入10000条记录---存储过程
- Oracle,SqlServer,DB2存储过程中异常处理
- Oracle,SqlServer,DB2存储过程中异常处理
- Oracle 存储过程部署时sqlplus无响应问题记录
- Oracle 分页存储过程 几十万条记录
- Oracle 存储过程中的细节-日期处理
- oracle存储过程中异常处理应注意的问题