unzip -d logger-3.1.1 logger_3.1.1.zip
% unzip -d logger-3.1.1 logger_3.1.1.zip
Archive: logger_3.1.1.zip
inflating: logger-3.1.1/create_user.sql
creating: logger-3.1.1/demos
inflating: logger-3.1.1/demos/demo_large_string.sql
inflating: logger-3.1.1/demos/demo_ok_to_log.sql
inflating: logger-3.1.1/demos/demo_params.sql
inflating: logger-3.1.1/demos/demo_plugin.sql
inflating: logger-3.1.1/demos/demo_set_level.sql
creating: logger-3.1.1/docs
inflating: logger-3.1.1/docs/.DS_Store
inflating: logger-3.1.1/docs/Addons.md
inflating: logger-3.1.1/docs/Best Practices.md
inflating: logger-3.1.1/docs/Change Logs.md
inflating: logger-3.1.1/docs/Development Guide.md
inflating: logger-3.1.1/docs/Installation.md
inflating: logger-3.1.1/docs/Logger API Template.md
inflating: logger-3.1.1/docs/Logger API.md
inflating: logger-3.1.1/docs/Plugins.md
inflating: logger-3.1.1/docs/README.md
inflating: logger-3.1.1/drop_logger.sql
inflating: logger-3.1.1/LICENSE
inflating: logger-3.1.1/logger.pkb
inflating: logger-3.1.1/logger.pks
inflating: logger-3.1.1/logger.pks.orig
inflating: logger-3.1.1/logger_install.sql
inflating: logger-3.1.1/logger_no_op.sql
inflating: logger-3.1.1/README.md
creating: logger-3.1.1/scripts
inflating: logger-3.1.1/scripts/create_logger_synonyms.sql
inflating: logger-3.1.1/scripts/grant_logger_to_user.sql
%
解凍先のディレクトリに移動して、インストール・スクリプトを実行します。
- Loggerを使用するスキーマにそれぞれ、Loggerをインストールする。
- Logger専用のスキーマを作成してLoggerをインストールする。他のスキーマは、このスキーマにインストールされたLoggerを呼び出す。
grant create any context to <Loggerインストール先スキーマ>;
SQL> grant create any context to wksp_apexdev;
Grantが正常に実行されました。
SQL>
SQL> @logger_install
_____________________________________________________________________________
User has all required privileges, installation will continue.
_____________________________________________________________________________
PL/SQLプロシージャが正常に完了しました。
tables/logger_logs.sql
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
tables/logger_prefs.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSがコンパイルされました
tables/logger_logs_apex_items.sql
Trigger BIU_LOGGER_PREFSが変更されました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSが変更されました。
tables/logger_logs_apex_items.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_APEX_ITEMSがコンパイルされました
tables/logger_prefs_by_client_id.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_purge_job.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_unset_prefs_by_client.sql
PL/SQLプロシージャが正常に完了しました。
views/logger_logs_5_min.sql
View LOGGER_LOGS_5_MINは作成されました。
views/logger_logs_60_min.sql
View LOGGER_LOGS_60_MINは作成されました。
views/logger_logs_terse.sql
packages/logger.pks
Package LOGGERがコンパイルされました
packages/logger.pkb
Package Body LOGGERがコンパイルされました
Recompile biu_logger_prefs after logger.pkb
Trigger BIU_LOGGER_PREFSが変更されました。
contexts/logger_context.sql
PL/SQLプロシージャが正常に完了しました。
procedures/logger_configure.plb
Procedure LOGGER_CONFIGUREがコンパイルされました
install/post_install_configuration.sql
Calling logger_configure
PL/SQLプロシージャが正常に完了しました。
Setting Logger Level
PL/SQLプロシージャが正常に完了しました。
*************************************************
Now executing LOGGER.STATUS...
Project Home Page : https://github.com/oraopensource/logger/
Logger Version : 3.1.1
Debug Level : DEBUG
Capture Call Stack : TRUE
Protect Admin Procedures : TRUE
APEX Tracing : Enabled
SCN Capture : Disabled
Min. Purge Level : DEBUG
Purge Older Than : 7 days
Pref by client_id expire : 12 hours
For all client info see : logger_prefs_by_client_id
PL/SQLプロシージャが正常に完了しました。
*************************************************
PL/SQLプロシージャが正常に完了しました。
View LOGGER_LOGS_TERSEが変更されました。
SQL>
SQL> @drop_logger
Package LOGGERが削除されました。
Procedure LOGGER_CONFIGUREが削除されました。
Table LOGGER_LOGS_APEX_ITEMSが削除されました。
Table LOGGER_PREFSが削除されました。
Table LOGGER_LOGSが削除されました。
Table LOGGER_PREFS_BY_CLIENT_IDが削除されました。
Sequence LOGGER_LOGS_SEQが削除されました。
Sequence LOGGER_APX_ITEMS_SEQが削除されました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
View LOGGER_LOGS_5_MINが削除されました。
View LOGGER_LOGS_60_MINが削除されました。
View LOGGER_LOGS_TERSEが削除されました。
SQL>
logger-3.1.1 % sql sys/*********@localhost/freepdb1 as sysdba
SQLcl: 水 9月 17 13:58:14 2025のリリース25.2 Production
Copyright (c) 1982, 2025, Oracle. All rights reserved.
接続先:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.9.0.25.07
SQL> @create_user
Logger create schema script.
You will be prompted for a username, tablespace, temporary tablespace and password.
Name of the new logger schema to create [LOGGER_USER] :
Tablespace for the new logger schema [USERS] :
Temporary Tablespace for the new logger schema [TEMP] :
Enter a password for the logger schema [] : ******
User LOGGER_USERは作成されました。
User LOGGER_USERが変更されました。
Grantが正常に実行されました。
LOGGER_USER user successfully created.
Important!!! Connect as the LOGGER_USER user and run the logger_install.sql script.
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.9.0.25.07から切断されました
logger-3.1.1 %
logger-3.1.1 % sql logger_user/oracle@localhost/freepdb1
SQLcl: 水 9月 17 14:03:43 2025のリリース25.2 Production
Copyright (c) 1982, 2025, Oracle. All rights reserved.
接続先:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.9.0.25.07
SQL> @logger_install
_____________________________________________________________________________
User has all required privileges, installation will continue.
_____________________________________________________________________________
PL/SQLプロシージャが正常に完了しました。
tables/logger_logs.sql
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
tables/logger_prefs.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSがコンパイルされました
LINE/COL ERROR
--------- -------------------------------------------------------------
6/5 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
6/29 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
9/11 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
19/13 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
30/13 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
40/13 PLS-00049: バインド変数NEW.PREF_TYPEが正しくありません。
エラー: コンパイラ・ログを確認してください
Trigger BIU_LOGGER_PREFSが変更されました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSが変更されました。
tables/logger_logs_apex_items.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_APEX_ITEMSがコンパイルされました
tables/logger_prefs_by_client_id.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_purge_job.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_unset_prefs_by_client.sql
PL/SQLプロシージャが正常に完了しました。
views/logger_logs_5_min.sql
View LOGGER_LOGS_5_MINは作成されました。
views/logger_logs_60_min.sql
View LOGGER_LOGS_60_MINは作成されました。
views/logger_logs_terse.sql
packages/logger.pks
Package LOGGERがコンパイルされました
packages/logger.pkb
Package Body LOGGERがコンパイルされました
Recompile biu_logger_prefs after logger.pkb
Trigger BIU_LOGGER_PREFSが変更されました。
contexts/logger_context.sql
PL/SQLプロシージャが正常に完了しました。
procedures/logger_configure.plb
Procedure LOGGER_CONFIGUREがコンパイルされました
install/post_install_configuration.sql
Calling logger_configure
PL/SQLプロシージャが正常に完了しました。
Setting Logger Level
PL/SQLプロシージャが正常に完了しました。
*************************************************
Now executing LOGGER.STATUS...
Project Home Page : https://github.com/oraopensource/logger/
Logger Version : 3.1.1
Debug Level : DEBUG
Capture Call Stack : TRUE
Protect Admin Procedures : TRUE
APEX Tracing : Enabled
SCN Capture : Disabled
Min. Purge Level : DEBUG
Purge Older Than : 7 days
Pref by client_id expire : 12 hours
For all client info see : logger_prefs_by_client_id
PL/SQLプロシージャが正常に完了しました。
*************************************************
PL/SQLプロシージャが正常に完了しました。
View LOGGER_LOGS_TERSEが変更されました。
SQL> @logger_install
_____________________________________________________________________________
User has all required privileges, installation will continue.
_____________________________________________________________________________
PL/SQLプロシージャが正常に完了しました。
tables/logger_logs.sql
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
tables/logger_prefs.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSがコンパイルされました
Trigger BIU_LOGGER_PREFSが変更されました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_PREFSが変更されました。
tables/logger_logs_apex_items.sql
PL/SQLプロシージャが正常に完了しました。
Trigger BIU_LOGGER_APEX_ITEMSがコンパイルされました
tables/logger_prefs_by_client_id.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_purge_job.sql
PL/SQLプロシージャが正常に完了しました。
jobs/logger_unset_prefs_by_client.sql
PL/SQLプロシージャが正常に完了しました。
views/logger_logs_5_min.sql
View LOGGER_LOGS_5_MINは作成されました。
views/logger_logs_60_min.sql
View LOGGER_LOGS_60_MINは作成されました。
views/logger_logs_terse.sql
packages/logger.pks
Package LOGGERがコンパイルされました
packages/logger.pkb
Package Body LOGGERがコンパイルされました
Recompile biu_logger_prefs after logger.pkb
Trigger BIU_LOGGER_PREFSが変更されました。
contexts/logger_context.sql
PL/SQLプロシージャが正常に完了しました。
procedures/logger_configure.plb
Procedure LOGGER_CONFIGUREがコンパイルされました
install/post_install_configuration.sql
Calling logger_configure
PL/SQLプロシージャが正常に完了しました。
Setting Logger Level
PL/SQLプロシージャが正常に完了しました。
*************************************************
Now executing LOGGER.STATUS...
Project Home Page : https://github.com/oraopensource/logger/
Logger Version : 3.1.1
Debug Level : DEBUG
Capture Call Stack : TRUE
Protect Admin Procedures : TRUE
APEX Tracing : Enabled
SCN Capture : Disabled
Min. Purge Level : DEBUG
Purge Older Than : 7 days
Pref by client_id expire : 12 hours
For all client info see : logger_prefs_by_client_id
PL/SQLプロシージャが正常に完了しました。
*************************************************
PL/SQLプロシージャが正常に完了しました。
View LOGGER_LOGS_TERSEが変更されました。
SQL>
SQL> @scripts/grant_logger_to_user wksp_apexdev
旧:grant execute on logger to &to_user
新:grant execute on logger to wksp_apexdev
Grantが正常に実行されました。
旧:grant select, delete on logger_logs to &to_user
新:grant select, delete on logger_logs to wksp_apexdev
Grantが正常に実行されました。
旧:grant select on logger_logs_apex_items to &to_user
新:grant select on logger_logs_apex_items to wksp_apexdev
Grantが正常に実行されました。
旧:grant select, update on logger_prefs to &to_user
新:grant select, update on logger_prefs to wksp_apexdev
Grantが正常に実行されました。
旧:grant select on logger_prefs_by_client_id to &to_user
新:grant select on logger_prefs_by_client_id to wksp_apexdev
Grantが正常に実行されました。
旧:grant select on logger_logs_5_min to &to_user
新:grant select on logger_logs_5_min to wksp_apexdev
Grantが正常に実行されました。
旧:grant select on logger_logs_60_min to &to_user
新:grant select on logger_logs_60_min to wksp_apexdev
Grantが正常に実行されました。
旧:grant select on logger_logs_terse to &to_user
新:grant select on logger_logs_terse to wksp_apexdev
Grantが正常に実行されました。
SQL>
データベースにLoggerを使用するユーザーで接続します。
@scripts/create_logger_synonyms <Loggerをインストールしたユーザー>
SQL> @scripts/create_logger_synonyms LOGGER_USER
旧:create or replace synonym logger for &from_user..logger
新:create or replace synonym logger for LOGGER_USER.logger
Synonym LOGGERは作成されました。
旧:create or replace synonym logger_logs for &from_user..logger_logs
新:create or replace synonym logger_logs for LOGGER_USER.logger_logs
Synonym LOGGER_LOGSは作成されました。
旧:create or replace synonym logger_logs_apex_items for &from_user..logger_logs_apex_items
新:create or replace synonym logger_logs_apex_items for LOGGER_USER.logger_logs_apex_items
Synonym LOGGER_LOGS_APEX_ITEMSは作成されました。
旧:create or replace synonym logger_prefs for &from_user..logger_prefs
新:create or replace synonym logger_prefs for LOGGER_USER.logger_prefs
Synonym LOGGER_PREFSは作成されました。
旧:create or replace synonym logger_prefs_by_client_id for &from_user..logger_prefs_by_client_id
新:create or replace synonym logger_prefs_by_client_id for LOGGER_USER.logger_prefs_by_client_id
Synonym LOGGER_PREFS_BY_CLIENT_IDは作成されました。
旧:create or replace synonym logger_logs_5_min for &from_user..logger_logs_5_min
新:create or replace synonym logger_logs_5_min for LOGGER_USER.logger_logs_5_min
Synonym LOGGER_LOGS_5_MINは作成されました。
旧:create or replace synonym logger_logs_60_min for &from_user..logger_logs_60_min
新:create or replace synonym logger_logs_60_min for LOGGER_USER.logger_logs_60_min
Synonym LOGGER_LOGS_60_MINは作成されました。
旧:create or replace synonym logger_logs_terse for &from_user..logger_logs_terse
新:create or replace synonym logger_logs_terse for LOGGER_USER.logger_logs_terse
Synonym LOGGER_LOGS_TERSEは作成されました。
SQL>
以上でLoggerのインストールは完了です。
PROCEDURE LOG
Argument Name Type In/Out Default?
------------------------- -------------------- ------ --------
P_TEXT VARCHAR2 IN
P_SCOPE VARCHAR2 IN Y
P_EXTRA CLOB IN Y
P_PARAMS PL/SQL TABLE IN Y
実際にログを記録してみます。
SQL> exec logger.log('my first log');
PL/SQLプロシージャが正常に完了しました。
SQL>
記録されたログを確認します。表LOGGER_LOGSを検索します。5分以内、または60分以内に書き込まれたログに限定するビューLOGGER_LOGS_5_MINとLOGGER_LOGS_60_MINもあります。
select * from logger_logs;
SQL> select * from logger_logs;
ID LOGGER_LEVEL TEXT TIME_STAMP SCOPE MODULE ACTION USER_NAME CLIENT_IDENTIFIER CALL_STACK UNIT_NAME LINE_NO SCN EXTRA SID CLIENT_INFO
_____ _______________ _______________ ______________________________ ________ _________ _________ _______________ ____________________ ________________________________________ ____________ __________ ______ ________ ______ ______________
6 16 my first log 25-09-17 05:52:02.934910000 SQLcl WKSP_APEXDEV object line object
handle number name
0x7bb28ec8 1 anonymous block
175
SQL>
SQL> desc logger_logs
名前 Nullかどうか タイプ
____________________ ___________ _________________
ID NOT NULL NUMBER
LOGGER_LEVEL NOT NULL NUMBER
TEXT VARCHAR2(4000)
TIME_STAMP NOT NULL TIMESTAMP(6)
SCOPE VARCHAR2(1000)
MODULE VARCHAR2(100)
ACTION VARCHAR2(100)
USER_NAME VARCHAR2(255)
CLIENT_IDENTIFIER VARCHAR2(255)
CALL_STACK VARCHAR2(4000)
UNIT_NAME VARCHAR2(255)
LINE_NO VARCHAR2(100)
SCN NUMBER
EXTRA CLOB
SID NUMBER
CLIENT_INFO VARCHAR2(64)
SQL>
ログを記録するファンクションには、LOGGING_LEVELの違いによりlogger.log、logger.log_info、log_warn、log_error、log_permanentがあります。引数はすべてlogger.logと同じです。これらのファンクションの使い分けについては、Best Practicesを参照してください。
SQL> exec logger.purge(0,logger.g_information);
BEGIN logger.purge(0,logger.g_information); END;
*
行でエラーが発生しました 1:
ORA-20000: You are not authorized to call this procedure. Change Logger pref: PROTECT_ADMIN_PROCS to false to avoid this.
ORA-06512: "LOGGER_USER.LOGGER", 行420
ORA-06512: "LOGGER_USER.LOGGER", 行2121
ORA-06512: 行1
https://docs.oracle.com/error-help/db/ora-20000/
More Details :
https://docs.oracle.com/error-help/db/ora-20000/
https://docs.oracle.com/error-help/db/ora-06512/
SQL>
update logger_prefs set pref_value = 'FALSE' where pref_name = 'PROTECT_ADMIN_PROCS' and pref_type = 'LOGGER';
SQL> select * from logger_prefs;
PREF_NAME PREF_VALUE PREF_TYPE
_________________________________ _____________________ ____________
LOGGER_DEBUG FALSE LOGGER
PREF_BY_CLIENT_ID_EXPIRE_HOURS 12 LOGGER
PLUGIN_FN_ERROR NONE LOGGER
PURGE_MIN_LEVEL DEBUG LOGGER
INSTALL_SCHEMA LOGGER_USER LOGGER
INCLUDE_CALL_STACK TRUE LOGGER
LEVEL DEBUG LOGGER
PURGE_AFTER_DAYS 7 LOGGER
PROTECT_ADMIN_PROCS TRUE LOGGER
LOGGER_VERSION 3.1.1 LOGGER
GLOBAL_CONTEXT_NAME LOGGER_USER_LOGCTX LOGGER
11行が選択されました。
SQL> update logger_prefs set pref_value = 'FALSE' where pref_name = 'PROTECT_ADMIN_PROCS' and pref_type = 'LOGGER';
1行更新しました。
SQL> commit;
コミットが完了しました。
SQL>
パージに関してはPROTECT_ADMIN_PROCSをFALSEにすることにより、専用ユーザーでなくてもログをパージできるようになります(とはいえ、複数人で開発している場合は、このようなことはしないでしょう)。
SQL> exec logger.purge(0,logger.g_information);
PL/SQLプロシージャが正常に完了しました。
SQL>
その場合でも、レベルがPERMANENTのログはPURGEプロシージャーでは消去できません。ログを完全に消去する場合は、表LOGGER_LOGSを全行削除します。
set long 4000
exec logger.log_userenv('NLS');
select * from logger_logs;
SQL> exec logger.log_userenv('NLS');
PL/SQLプロシージャが正常に完了しました。
SQL> select * from logger_logs;
ID LOGGER_LEVEL TEXT TIME_STAMP SCOPE MODULE ACTION USER_NAME CLIENT_IDENTIFIER CALL_STACK UNIT_NAME LINE_NO SCN EXTRA SID CLIENT_INFO
_____ _______________ ____________________________________________ ______________________________ ________ _________ _________ _______________ ____________________ _____________ ____________ __________ ______ ___________________________________________________________ ______ ______________
12 64 USERENV values stored in the EXTRA column 25-09-17 06:20:23.299814000 SQLcl WKSP_APEXDEV NLS_CALENDAR : GREGORIAN
NLS_CURRENCY : ¥
NLS_DATE_FORMAT : RR-MM-DD
NLS_DATE_LANGUAGE : JAPANESE
NLS_SORT : BINARY
NLS_TERRITORY : JAPAN
LANG : JA
LANGUAGE : JAPANESE_JAPAN.AL32UTF8
175
SQL>