Come caricare file di log IIS in un DB

Posted on 16 settembre 2008

0


Per poter manipolare le varie informazioni che il Web Server IIS scrive sui suoi file di log è opportuno caricarle su di un DB. Per farlo utilizzo i comandi di unix grep, sed e mysql.
Potete trovare questi comandi anche per Windows, e io ve lo consiglio vivamente. Scaricate il file UnxUtils.zip da Sourceforge.net; se non volete scaricare direttamente da questo link (o se il link non dovesse più funzionare) andate alla pagina http://sourceforge.net/projects/unxutils e seguite le istruzioni per il download.

I passi che seguiremo sono:

  • Prendiamo tutte le righe dei file di log ad eccezione di quelle che presentano dei commenti e le buttiamo in un unico file (e quindi avremo bisogno di filtrare le righe eliminando quelle che cominciano con #);
  • Eliminiamo con sed l’etichetta che il buon grep aggiunge all’inizio della riga (visto che per il punto precedente avremo utilizzato, per l’appunto, il comando grep);
  • Ci assicuriamo che gli url contenenti la stringa “repair” (nel mio caso) non vengano interpretati come segnalazione d’interruzione di riga (“r”).

Ovvero:

  • grep -v “^#” *.log | sed -e “s/^[^:]*://” -e “s/winnt\repair/winnt\_repair/g” > cumuloLog.log

Se ora vogliamo, con sed sostituiamo di nuovo “_repair” con “repair”.
Spostiamo infine il file ottenuto (cumuloLog.log) lì dove ci serve e lanciamo l’importazione in MySQL:

  • mysql -u USERNAME -p PASSWORD -D NOMEDELDB -e “LOAD DATA INFILE ‘cumuloLog.log’ INTO TABLE nomedellatabella FIELDS TERMINATED BY ‘ ‘”

Fatto.
Buon lavoro.