Skip to Main Content

 

Auswahl  

TomCat Logfiles mittels External Table lesen 

Oracle
DBA
RDBMS 12.x
24.03.20 (MP)
05.07.23(MD)
TomCat Logfiles, External Table

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.