Oracle利用UTL_FILE记录日志功能

Oracle利用UTL_FILE记录日志功能

1.功能描述

采用UTL_FILE包的功能进行创建log文件以及输出log信息

2.关于UTL_FILE

Oracle提供的文件操作包UTL_FILE包中的UTL_FILE.FOPEN负责打开一个文件。

sql 复制代码
UTL_FILE.FOPEN(location in varchar2, filename in varchar2, open_mode in varchar2) return FILE_TYPE;

Location 是路径参数;

FILENAME 是文件名;

OPEN_MODE是打开模式,'R'是读文本,'W'是写文本,'A'是附加文本,参数不分大小写,如果指定'A'但是文件不存在,它会用'W'先创建出来,'W'有覆盖的功能;

其中的location并不能简单的指定为'D:\temp'等路径,要建立一个DIRECTORY变量并付给权限(必须以DBA身份登录):

sql 复制代码
create or replace directory D_OUTPUT as 'D:\TEMP';
grant read, write on directory D_OUTPUT to public;

注:如上述代码所示,在D盘需要手动创建命名为TEMP的文件夹,执行上述代码,并不会自动创建相关文件夹,上述代码在于定义,并赋予该定义的权限,此处是public

之后就可以用UTL_FILE包建立文件了:

sql 复制代码
FILE_HANDLE := UTL_FILE.FOPEN('D_OUTPUT', 'log.txt', 'A');

写文件以及关闭:

sql 复制代码
UTL_FILE.put_line(FILE_HANDLE, write_string); 
UTL_FILE.FCLOSE(FILE_HANDLE);

完整代码如下:

sql 复制代码
CREATE OR REPLACE Procedure log_write_Info (name_string In Varchar2,dispaly_string In Varchar2)
As
 FILE_HANDLE UTL_FILE.FILE_TYPE;
 pro_date date;
Begin
  select sysdate into pro_date from dual;
   FILE_HANDLE := UTL_FILE.FOPEN('D_OUTPUT', name_string||'-'||to_char(pro_date,'yyyy-mm-dd')||'-log.txt', 'A');
  UTL_FILE.put_line(FILE_HANDLE,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')||'--------'||dispaly_string); 
 
  UTL_FILE.FCLOSE(FILE_HANDLE);
End log_write_Info;

3.调用存储过程写日志

sql 复制代码
begin

   log_write_Info('调试','111');--procedure是存储过程名

end;

效果:

相关推荐
-SGlow-3 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5664 小时前
Oracle 误删数据恢复
数据库·oracle
♡喜欢做梦5 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风5 小时前
MySQL的认识与基本操作
数据库·mysql
dblens 数据库管理和开发工具5 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658315 小时前
MySQL的基础操作
数据库·mysql
不辉放弃7 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_7 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
程序员编程指南8 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
幼儿园老大*9 小时前
数据中心-时序数据库InfluxDB
数据库·时序数据库