Auswahl  

TomCat Logfiles mittels External Table lesen 

DBA
24.03.20 (MP)
25.03.20

Passende Schulungen zum Thema

In unserem heutigen Tipp widmen wir uns dem Thema: Auslesen von Logfiles mittels External Tables.
create directory tomcat_log_dir as '/opt/tomcat/latest/logs'
/
grant read on directory tomcat_log_dir to scott
/

-- Format der Log-Datei
-- 127.0.0.1 - - [24/Mar/2020:13:25:47 +0100] "POST /oracle/wwv_flow.ajax HTTP/1.1" 200 560
DROP TABLE tc_error_log;
CREATE TABLE tc_error_log (
  ip              varchar2(20),
  zeitstempel     date,
  url_text          varchar2(200),
  server_error  varchar2(5),
  send_bytes     varchar2(20)
)
ORGANIZATION EXTERNAL
(
   TYPE oracle_loader
   DEFAULT DIRECTORY tomcat_log_dir
   ACCESS PARAMETERS (  
      RECORDS DELIMITED BY NEWLINE  
      nobadfile
      nologfile
      fields MISSING FIELD VALUES ARE NULL
      (
      ip            char(20) terminated by '- -',
      zeitstempel   date "DD/MON/YYYY:HH24:MI:SS" terminated by whitespace enclosed by '[' and '+0100]' ,
      url_text      char(1000) terminated by whitespace enclosed by '"',
      server_error  char(5) terminated by whitespace,
      send_bytes    char(20)
    )     
   )  
LOCATION ('localhost_access_log.2020-03-24.txt')
)
REJECT LIMIT UNLIMITED PARALLEL;

Anmerkungen:
1. Ärgerlicher Weise bekommt die Log-Datei jeden Tag einen neuen Namen. Sie können aber den Location Parameter jeden Tag ändern. Evtl mit einem Job
Für den aktuellen Tag:
ALTER TABLE tc_error_log LOCATION ('localhost_access_log.2020-03-24.txt');
2. Wenn Sie ein anders Format in der Datei besitzen, ist es am Anfang praktisch sich ein Logfile der External Table anzusehen:
Ersetzen Sie dazu den Parameter nologfile durch
logfile data_pump_dir:'tomcat_ext_table.log'

und optional den Parameter nobadfile durch
badfile data_pump_dir:'tomcat_ext_table.bad'

3. Etwas unschön ist auch der End-Delimter des Datums ('+0100]') , denn da ist die Zeitzone enthalten (im Winter +0100, im Sommer +0200) aber das soll sich ja bald ändern :-)
Es gibt aber noch eine andere Möglichkeit: Sie können das Format des TomCat Loggings beeinflussen durch eine Änderung in der Datei server.xml

Nun können Sie die Log-Datei mittels Select wunderbar durchsuchen:
SELECT * FROM tc_error_log;

oder gib mir alle 404 Fehler der letzten Stunde:
SELECT * FROM tc_error_log
WHERE server_error=404
AND zeitstempel>sysdate + INTERBAL '1' hour;


 

Weitere Interessante Kurs-Tipps zum Thema

Oracle Rest Benutzer im TomCat
Praktische Aliase unter Oracle / APEX und Tomcat / Apache
Filterung der Alert.log mittels SQL

Besuchen Sie uns doch bei einer unsere über 50 Oracle Schulungen in München - Unterhaching, oder verfolgen Sie die Training per Videostreaming bequem vom Home Office oder Büro aus.