ORACE APEX 18.2 之四(安裝logger)

ORACE APEX 18.2 之四(安裝logger)

方案. 新用戶下安裝logger

#Using sql*plus or SQL Developer, connect to the database as system or a user with the DBA role.
[oracle@xag182 logger]$ sql sys/[email protected]:1521/PDB1 as sysdba

SQL> SET SQLFORMAT ansiconsole

SQL> 
select tablespace_name,file_name,bytes/1024/1024 mb from dba_temp_files 
union all 
select tablespace_name,file_name,bytes/1024/1024 mb from dba_data_files;

TABLESPACE_NAME  FILE_NAME                                  MB   
TEMP1            /u02/oradata/MPAPEX/pdb1/TEMP1_1.dbf       256  
TEMP1            /u02/oradata/MPAPEX/pdb1/TEMP1_2.dbf       256  
TEMP2            /u02/oradata/MPAPEX/pdb1/TEMP2_1.dbf       256  
SYSTEM           /u02/oradata/MPAPEX/pdb1/system01.dbf      360  
SYSAUX           /u02/oradata/MPAPEX/pdb1/sysaux01.dbf      370  
UNDOTBS1         /u02/oradata/MPAPEX/pdb1/undotbs01.dbf     300  
PDB1_UD          /u02/oradata/MPAPEX/pdb1/PDB1_UD1.dbf      128  
PDB1_UD          /u02/oradata/MPAPEX/pdb1/PDB1_UD2.dbf      128  
I_PDB1_UD        /u02/oradata/MPAPEX/pdb1/I_PDB1_UD1.dbf    64   
I_PDB1_UD        /u02/oradata/MPAPEX/pdb1/I_PDB1_UD2.dbf    64   
APEX182          /u02/oradata/MPAPEX/pdb1/apex182.dbf       384  
APEX182_FILE     /u02/oradata/MPAPEX/pdb1/apex182_file.dbf  256  
ORDS183          /u02/oradata/MPAPEX/pdb1/ords183.dbf       256  
APEXTB           /u02/oradata/MPAPEX/pdb1/apextb.dbf        128  

SQL> select * from dba_tablespace_groups;

GROUP_NAME  TABLESPACE_NAME  
TEMP_GP     TEMP1     

create_user.sql

SQL> @/home/oracle/logger/create_user.sql

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] : PDB1_UD
Temporary Tablespace for the new logger schema  [TEMP] : TEMP_GP
Enter a password for the logger schema              [] : 123456

User LOGGER_USER created.
User LOGGER_USER altered.
Grant succeeded.
LOGGER_USER user successfully created.
Important!!! Connect as the LOGGER_USER user and run the logger_install.sql script.

logger_install.sql

[oracle@xag182 logger]$ sql logger_user/[email protected]:1521/PDB1
SQL> SET SQLFORMAT ansiconsole

SQL> @/home/oracle/logger/logger_install.sql
___________________________________________________________________
User has all required privileges, installation will continue.
___________________________________________________________________

PL/SQL procedure successfully completed.

tables/logger_logs.sql

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

tables/logger_prefs.sql

PL/SQL procedure successfully completed.

Trigger BIU_LOGGER_PREFS compiled

Errors: check compiler log

Trigger BIU_LOGGER_PREFS altered.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

Trigger BIU_LOGGER_PREFS altered.

tables/logger_logs_apex_items.sql

PL/SQL procedure successfully completed.

Trigger BIU_LOGGER_APEX_ITEMS compiled

tables/logger_prefs_by_client_id.sql

PL/SQL procedure successfully completed.

jobs/logger_purge_job.sql

PL/SQL procedure successfully completed.

jobs/logger_unset_prefs_by_client.sql

PL/SQL procedure successfully completed.

views/logger_logs_5_min.sql

View LOGGER_LOGS_5_MIN created.

views/logger_logs_60_min.sql

View LOGGER_LOGS_60_MIN created.

views/logger_logs_terse.sql
packages/logger.pks

Package LOGGER compiled

packages/logger.pkb

Package Body LOGGER compiled

Recompile biu_logger_prefs after logger.pkb

Trigger BIU_LOGGER_PREFS altered.

contexts/logger_context.sql

PL/SQL procedure successfully completed.

procedures/logger_configure.plb

Procedure LOGGER_CONFIGURE compiled

install/post_install_configuration.sql
Calling logger_configure

PL/SQL procedure successfully completed.

Setting Logger Level

PL/SQL procedure successfully completed.

*************************************************
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 procedure successfully completed.
*************************************************
PL/SQL procedure successfully completed.

View LOGGER_LOGS_TERSE altered.

授權 apex 用戶 訪問 Logger架構下的對象

[oracle@xag182 logger]$ sql logger_user/[email protected]:1521/PDB1

SQL> SET SQLFORMAT ansiconsole

SQL> @/home/oracle/logger/scripts/grant_logger_to_user.sql apex
old:grant execute on logger to &to_user
new:grant execute on logger to apex

Grant succeeded.

old:grant select, delete on logger_logs to &to_user
new:grant select, delete on logger_logs to apex

Grant succeeded.

old:grant select on logger_logs_apex_items to &to_user
new:grant select on logger_logs_apex_items to apex

Grant succeeded.

old:grant select, update on logger_prefs to &to_user
new:grant select, update on logger_prefs to apex

Grant succeeded.

old:grant select on logger_prefs_by_client_id to &to_user
new:grant select on logger_prefs_by_client_id to apex

Grant succeeded.

old:grant select on logger_logs_5_min to &to_user
new:grant select on logger_logs_5_min to apex

Grant succeeded.

old:grant select on logger_logs_60_min to &to_user
new:grant select on logger_logs_60_min to apex

Grant succeeded.

old:grant select on logger_logs_terse to &to_user
new:grant select on logger_logs_terse to apex

Grant succeeded.

在apex用戶下創建 Logger架構下的對象同義詞

[oracle@xag182 logger]$ sql apex/[email protected]:1521/PDB1

SQLcl: Release 12.2.0.1.0 RC on Tue Feb 12 16:12:39 2019

SQL> @/home/oracle/logger/scripts/create_logger_synonyms.sql logger_user
old:create or replace synonym logger for &from_user..logger
new:create or replace synonym logger for logger_user.logger

Synonym LOGGER created.

old:create or replace synonym logger_logs for &from_user..logger_logs
new:create or replace synonym logger_logs for logger_user.logger_logs

Synonym LOGGER_LOGS created.

old:create or replace synonym logger_logs_apex_items for &from_user..logger_logs_apex_items
new:create or replace synonym logger_logs_apex_items for logger_user.logger_logs_apex_items

Synonym LOGGER_LOGS_APEX_ITEMS created.

old:create or replace synonym logger_prefs for &from_user..logger_prefs
new:create or replace synonym logger_prefs for logger_user.logger_prefs

Synonym LOGGER_PREFS created.

old:create or replace synonym logger_prefs_by_client_id for &from_user..logger_prefs_by_client_id
new:create or replace synonym logger_prefs_by_client_id for logger_user.logger_prefs_by_client_id

Synonym LOGGER_PREFS_BY_CLIENT_ID created.

old:create or replace synonym logger_logs_5_min for &from_user..logger_logs_5_min
new:create or replace synonym logger_logs_5_min for logger_user.logger_logs_5_min

Synonym LOGGER_LOGS_5_MIN created.

old:create or replace synonym logger_logs_60_min for &from_user..logger_logs_60_min
new:create or replace synonym logger_logs_60_min for logger_user.logger_logs_60_min

Synonym LOGGER_LOGS_60_MIN created.

old:create or replace synonym logger_logs_terse for &from_user..logger_logs_terse
new:create or replace synonym logger_logs_terse for logger_user.logger_logs_terse

Synonym LOGGER_LOGS_TERSE created.

鎖定logger_user 用戶(可選)

#如果要限制對“Logger Schema”的訪問(因為它具有CREATE ANY CONTEXT權限),您可以將其簡單鎖定
[oracle@xag182 logger]$ sql sys/[email protected]:1521/PDB1 as sysdba

SQL> alter user logger_user  account lock;

[oracle@xag182 logger]$ sql apex/[email protected]:1521/PDB1

SQL> set serveroutput on

SQL> exec 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 procedure successfully completed.

#要啟用此選項,請將dbms_flashback上的execute授予擁有記錄器包的用戶。logger_logs中的每個插入都將包含SCN(系統提交編號)。這允許您將會話閃回到發生錯誤的時間,以幫助調試它甚至撤消任何數據損壞。作為SYS來自sql * plus:

[oracle@xag182 logger]$ sql sys/[email protected]:1521/PDB1 as sysdba

SQL> grant execute on dbms_flashback to logger_user;

[oracle@xag182 logger]$ sql logger_user/[email protected]:1521/PDB1

SQL> set serveroutput on

SQL> exec logger_configure;

SQL> exec 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              : Enabled
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

[oracle@xag182 logger]$ sql apex/[email protected]:1521/PDB1

SQL> set serveroutput on

SQL> exec 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              : Enabled
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

維護 默認情況下,DBMS_SCHEDULER作業“LOGGER_PURGE_JOB”每晚凌晨1:00運行,並刪除任何超過7天的錯誤級別為*g_debug*或更高的*日誌*,其中包括*g_debug*和*g_timing*。這意味著永遠不會清除任何較低級別的日誌,例如*g_error*或*g_permanent*。您也可以使用*logger.purge_all*手動清除所有日誌,但這不會刪除錯誤級別為*g_permanent的*日誌。 從2.0.0開始,引入了一個新作業*LOGGER_UNSET_PREFS_BY_CLIENT*以刪除[客戶端特定的日誌記錄]。默認情況下,此作業每小時運行一次。

APEX 此選項允許您調用logger.log_apex_items,它從當前會話中獲取所有APEX項的名稱和值,並將它們存儲在logger_logs_apex_items表中。這在調試APEX問題時非常有用。如果在數據庫中安裝了APEX,則logger_configure會自動啟用此選項。

喜好

Logger將其配置設置存儲在LOGGER_PREFS中。這些是以下首選項:

偏愛 描述
GLOBAL_CONTEXT_NAME Logger用於保存值的上下文。建議不要修改此設置。
INCLUDE_CALL_STACK 存儲調用堆棧。注意客戶端特定設置可以覆蓋此。
INSTALL_SCHEMA 安裝Logger的架構。不要修改。
LEVEL 當前架構Logger級別。
LOGGER_VERSION Logger的當前版本。不要修改它,因為它可能會影響將來的遷移。
PREF_BY_CLIENT_ID_EXPIRE_HOURS 設置客戶端特定日誌記錄級別的默認時間(以小時為單位)。
PROTECT_ADMIN_PROCS 如果為TRUE,那麼只有在INSTALL_SCHEMA中定義的用戶才能運行privilidged過程。
PURGE_AFTER_DAYS 在這麼多天之後,清除等於或高於PURGE_MIN_LEVEL的日誌。每晚清洗工作都要清理記錄器。
PURGE_MIN_LEVEL 最低級別清除自動記錄器清理作業中使用的日誌。
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     
INCLUDE_CALL_STACK              TRUE                LOGGER     
INSTALL_SCHEMA                  LOGGER_USER         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 

測試1

[oracle@xag182 logger]$ sql apex/[email protected]:1521/PDB1

SQL> exec logger.log('hello world');

SQL> 
select t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid  from logger_logs t;

ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
1   8             Log level set to DEBUG for cli  2019-02-12 15:57:04  LOGGER_USER  38   
2   1             Logger version 3.1.1 installed  2019-02-12 15:57:04  LOGGER_USER  38   
3   16            hello world                     2019-02-12 16:59:17  APEX         35 

測試2

declare
  l_scope logger_logs.scope%type := 'demo.params';
  -- Simulates parameters 
  l_num number := 1;
  l_date date := sysdate;
  l_boolean boolean := false;
  l_params logger.tab_param;
begin
  logger.append_param(l_params, 'l_num', l_num);
  logger.append_param(l_params, 'l_date', l_date);
  logger.append_param(l_params, 'l_boolean', l_boolean);
  
  logger.log('START', l_scope, null, l_params);
  
  logger.log('END', l_scope);
end;
/

SQL> 
select t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid,t.extra  
from logger_logs t where t.scope = 'demo.params' order by 1 desc;

ID  LOGGER_LEVEL  TEXT   CREATE_TIME          USER_NAME  SID  EXTRA                                                                         
5   16            END    2019-02-12 17:11:15  APEX       35                                                                                 
4   16            START  2019-02-12 17:11:15  APEX       35   

*** Parameters ***
l_num: 1
l_date: 12-FEB-2019 17:11:15
l_boolean: FALSE  

測試3

CREATE OR REPLACE PACKAGE TEST_LOGGER
As
    procedure LOGGER_PROC(v1 number,v2 number);
END TEST_LOGGER;
/
CREATE OR REPLACE PACKAGE BODY TEST_LOGGER
As
 gc_scope_prefix constant varchar2(31) := lower($$plsql_unit) || '.';

 procedure LOGGER_PROC(v1 number,v2 number)
 Is
  l_scope logger_logs.scope%type := gc_scope_prefix || 'LOGGER_PROC';
  l_params logger.tab_param;
  v3 number;
  begin
    logger.append_param(l_params, 'v1', v1);
    logger.append_param(l_params, 'v2', v2);
    logger.log('START', l_scope, null, l_params);

    v3:=v1/v2;

    logger.log('END', l_scope);
  exception When Others Then
    rollback;
    logger.log_error(Sqlerrm, l_scope, null, l_params);
    --raise;
 end LOGGER_PROC;

END TEST_LOGGER;
/

begin
  test_logger.logger_proc(10,5);
end;

begin
  test_logger.logger_proc(10,0);
end;

SQL> 
select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid,t.extra
from logger_logs t where t.scope = 'test_logger.logger_proc' order by 1 desc;

SCOPE                    ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME  SID  EXTRA                               
test_logger.logger_proc  6   16            START                           2019-02-12 17:40:48  APEX       25   

*** Parameters ***
v1: 10
v2: 5  
test_logger.logger_proc  7   16            END                             2019-02-12 17:40:48  APEX       25                                       
test_logger.logger_proc  8   16            START                           2019-02-12 17:41:35  APEX       25   

*** Parameters ***
v1: 10
v2: 0  
test_logger.logger_proc  9   2             ORA-01476: divisor is equal to  2019-02-12 17:41:35  APEX       25   

*** Parameters ***
v1: 10
v2: 0

測試4

SQL> 
    declare
      l_log boolean;
      l_log_str varchar2(255);
    begin    
      l_log := logger.ok_to_log(logger.g_warning); -- Just change this with the level you want to test
    
      if l_log then
        l_log_str := 'TRUE';
     else
       l_log_str := 'FALSE';
     end if;
   
     dbms_output.put_line('Ok to log? ' || l_log_str);   
   end;
   /
Ok to log? TRUE

測試5

[oracle@xag182 logger]$ sql logger_user/[email protected]:1521/PDB1

SQL> exec logger.set_level(logger.g_debug);

SQL> exec logger.log('test, this should show up');

SQL> SET SQLFORMAT ansiconsole

SQL> 
select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid 
from logger_logs_5_min t order by id desc;

SCOPE  ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
       13  16            test, this should show up       2019-02-12 18:46:56  LOGGER_USER  35

SQL> exec logger.set_level (logger.g_error);

SQL> exec logger.log('test, this should not show up');

SQL> select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid 
  2  from logger_logs_5_min t order by id desc;
SCOPE  ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
       14  8             Log level set to ERROR for cli  2019-02-12 18:50:08  LOGGER_USER  35   
       13  16            test, this should show up       2019-02-12 18:46:56  LOGGER_USER  35 

-- In a different client run the following

exec dbms_session.set_identifier('logger_demo_session');

exec logger.set_level(logger.g_debug, sys_context('userenv','client_identifier'));

exec logger.log('test, this should show up for client_id: ' || sys_context('userenv','client_identifier'));

SQL> select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid 
  2* from logger_logs_5_min t order by id desc;
SCOPE  ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
       16  16            test, this should show up for   2019-02-12 18:53:33  LOGGER_USER  35   
       15  8             Log level set to DEBUG for cli  2019-02-12 18:53:24  LOGGER_USER  35   
       14  8             Log level set to ERROR for cli  2019-02-12 18:50:08  LOGGER_USER  35 

-- In main client run the following

exec logger.log('this should not show up since the global config is error');

SQL> select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid 
  2* from logger_logs_5_min t order by id desc;
SCOPE  ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
       17  16            this should not show up since   2019-02-12 18:55:23  LOGGER_USER  35   
       16  16            test, this should show up for   2019-02-12 18:53:33  LOGGER_USER  35   
       15  8             Log level set to DEBUG for cli  2019-02-12 18:53:24  LOGGER_USER  35  

-- In other client clear identifier to return to global config

exec dbms_session.clear_identifier;


-- Unset all client specific level settings
exec logger.unset_client_level_all;



-- TODO move to seperate file?
-- How does this work for batches?
[oracle@xag182 ~]$ sql sys/[email protected]:1521/PDB1 as sysdba
SQL> grant execute on dbms_lock to logger_user;

[oracle@xag182 ~]$ sql logger_user/[email protected]:1521/PDB1

SQL> SET SQLFORMAT ansiconsole

create or replace procedure run_long_batch(
  p_client_id in varchar2,
  p_iterations in pls_integer)
as
  l_params logger.tab_param;
  l_scope logger_logs.scope%type := 'run_long_batch';
begin
  logger.append_param(l_params, 'p_client_id', p_client_id);
  logger.append_param(l_params, 'p_iterations', p_iterations);
  logger.log('START', l_scope, null, l_params);

  dbms_session.set_identifier(p_client_id);

  for i in 1..p_iterations loop
    logger.log('i: ' || i, l_scope);
    dbms_lock.sleep(1);
  end loop;

  logger.log('END');

end run_long_batch;
/

-- Setup
begin
  delete from logger_logs;
  logger.set_level(logger.g_error); -- Simulates Production
  logger.unset_client_level_all;
  commit;
end;
/

-- In SQL Plus
begin
  run_long_batch(p_client_id => 'in_sqlplus', p_iterations => 50);
end;
/


-- In SQL Dev
exec logger.set_level(logger.g_debug, 'in_sqlplus');

exec logger.unset_client_level('in_sqlplus');

exec logger.set_level(logger.g_debug, 'in_sqlplus');

exec logger.unset_client_level('in_sqlplus');

SQL> select t.scope,t.id,t.logger_level,substr(t.text,1,30) as text,to_char(t.time_stamp,'yyyy-mm-dd hh24:mi:ss') as create_time,t.user_name,t.sid 
  2* from logger_logs_5_min t order by id desc;
SCOPE           ID  LOGGER_LEVEL  TEXT                            CREATE_TIME          USER_NAME    SID  
run_long_batch  43  16            i: 48                           2019-02-12 19:06:55  LOGGER_USER  35   
run_long_batch  42  16            i: 47                           2019-02-12 19:06:54  LOGGER_USER  35   
run_long_batch  41  16            i: 46                           2019-02-12 19:06:53  LOGGER_USER  35   
run_long_batch  40  16            i: 45                           2019-02-12 19:06:52  LOGGER_USER  35   
run_long_batch  39  16            i: 44                           2019-02-12 19:06:51  LOGGER_USER  35   
run_long_batch  38  16            i: 43                           2019-02-12 19:06:50  LOGGER_USER  35   
run_long_batch  37  16            i: 42                           2019-02-12 19:06:49  LOGGER_USER  35   
run_long_batch  36  16            i: 41                           2019-02-12 19:06:48  LOGGER_USER  35   
run_long_batch  35  16            i: 40                           2019-02-12 19:06:47  LOGGER_USER  35   
run_long_batch  34  16            i: 39                           2019-02-12 19:06:46  LOGGER_USER  35   
                33  8             Log level set to DEBUG for cli  2019-02-12 19:06:46  LOGGER_USER  799  
run_long_batch  32  16            i: 28                           2019-02-12 19:06:35  LOGGER_USER  35   
run_long_batch  31  16            i: 27                           2019-02-12 19:06:34  LOGGER_USER  35   
run_long_batch  30  16            i: 26                           2019-02-12 19:06:33  LOGGER_USER  35   
run_long_batch  29  16            i: 25                           2019-02-12 19:06:32  LOGGER_USER  35   
run_long_batch  28  16            i: 24                           2019-02-12 19:06:31  LOGGER_USER  35   
run_long_batch  27  16            i: 23                           2019-02-12 19:06:30  LOGGER_USER  35   
run_long_batch  26  16            i: 22                           2019-02-12 19:06:29  LOGGER_USER  35   
run_long_batch  25  16            i: 21                           2019-02-12 19:06:28  LOGGER_USER  35   
run_long_batch  24  16            i: 20                           2019-02-12 19:06:27  LOGGER_USER  35   
run_long_batch  23  16            i: 19                           2019-02-12 19:06:26  LOGGER_USER  35   
run_long_batch  22  16            i: 18                           2019-02-12 19:06:25  LOGGER_USER  35   
run_long_batch  21  16            i: 17                           2019-02-12 19:06:24  LOGGER_USER  35   
run_long_batch  20  16            i: 16                           2019-02-12 19:06:23  LOGGER_USER  35   
                19  8             Log level set to DEBUG for cli  2019-02-12 19:06:23  LOGGER_USER  799  
                18  8             Log level set to ERROR for cli  2019-02-12 19:05:51  LOGGER_USER  35   


26 rows selected.

-- Reset Logging Level
exec logger.set_level(logger.g_debug);

你可能感兴趣的:(ORACE APEX 18.2 之四(安裝logger))