Skip to Main Content
 
Titelbild Muniqsoft Training

Search Results

Oracle Tipp Text

TomCat Logfiles mittels External Table lesen

Bereich:DBA, Version: ab RDBMS 12.x, Letzte Überarbeitung: 25.03.2020

Keywords:TomCat Logfiles, External Table

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 Interessente Artikel zum Thema:


Empfohlene Schulungen zum Thema: