OracleのPROCEDUREでファイルにログを出力する
参照:http://www.shift-the-oracle.com/plsql/utl_file/create-directory.html
2.UTL_FILEの設定
CREATE DIRECTORY HOGE_LOG_DIR AS '/var/log/oracle'; GRANT READ ON DIRECTORY HOGE_LOG_DIR TO user_name ; GRANT WRITE ON DIRECTORY HOGE_LOG_DIR TO user_name ; -- 確認 SELECT * FROM ALL_DIRECTORIES ;
3.PROCEDURE本体
はこんな感じ
--------------------- -- ファイルに出力 --------------------- PROCEDURE INFO (MSG VARCHAR2) IS FILE_HANDLE UTL_FILE.FILE_TYPE; /* FILEハンドラ */ BEGIN /* 出力先のファイルを追加書込みモードでOPEN */ FILE_HANDLE := UTL_FILE.FOPEN( 'HOGE_LOG_DIR' , 'hoge.log' , 'A' /* "R"…Input、"W"…Output、"A"…Append */ , 32767 /* レコードバイト長:1 〜 32767 */ ); /* 出力先のファイルへ書込み処理を行う。*/ UTL_FILE.PUT_LINE( FILE_HANDLE , to_char(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') || ' ' || 'INFO' || ' ' || MSG ); /* 出力先のファイルをCLOSE */ UTL_FILE.FCLOSE(FILE_HANDLE); /* エラーは全て無視 */ EXCEPTION WHEN OTHERS THEN UTL_FILE.FCLOSE_ALL; RAISE; END INFO_FILE;