back to top

I file di log di Apache: access.log e error.log

Apache è in grado di registrare gli eventi gestiti dal web server, comprese le richieste provenienti da altri terminali, le risposte inviate e gli eventuali errori. La registrazione di questi eventi avviene all’interno dei cosiddetti file di log o, più semplicemnte, log.

Cos’è un log?

La parola log nasce da logbook, termine con il quale nel XIX secolo si indicava il registro di bordo presente su ogni nave. All’interno dei log un sistema informatico memorizza, esattamente come all’interno di un diario di bordo, tutti gli eventi che lo riguardano al fine di tenerne traccia.

La finalità principale dei log è consentire – in caso di guasti, errori, problemi o attacchi informatici – l’analisi degli eventi accaduti all’interno del sistema in modo da agevolare la risoluzione di eventuali bug o falle.

I log di Apache

Apache genera due tipi di log:

  • log degli accessi (access log);
  • log degli errori (error log).

Il log degli accessi

Il log degli accessi contiene informazioni su tutte le richieste in arrivo al server web. Queste informazioni possono includere l’indirizzo IP del richiedente, data e ora della richiesta, metodo di richiesta, file richiesto, lo stato della richiesta, il referrer e lo user agent del richiedente. Ecco un esempio di una tipica voce del registro di accesso:

123.123.123.123 - - [12/sep/2010:15:34:25 +0300] "GET /foto/tramonto.jpg HTTP/1.1" 200 140 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.5 Safari/535.19"

Da questa stringa possiamo ricavare, come evidente, una serie di utilissime informazioni.

Il log degli errori

Il registro degli errori contiene informazioni sugli errori riscontrati dal server durante l’elaborazione delle richieste, come ad esempio file mancanti. Ecco un esempio piuttosto comune:

[12/sep/2010:15:34:25 +0300] [error] [client 123.123.123.123] File does not exist: /var/www/favicon.ico

Dove sono i file di log

Per impostazione predefinita, Apache archivia i log degli accessi e degli errori all’interno di due file separati. La posizione esatta in cui vengono salvati questi file dipende dal sistema operativo.

Per la maggior parte degli utenti di Debian e Ubuntu, i log degli accessi si troveranno in una di queste due posizioni:

/var/log/apache/access.log
/var/log/apache2/access.log

Gli utenti di Red Hat, CentOS e Fedora il log degli accessi si troverà in:

/var/log/httpd/access_log

Se nessuno di questi percorsi porta al file di log, è possibile che nel file di configurazione di Apache sia presente una configurazione personalizzata:

CustomLog "/var/log/my-httpd-access.log"

Per conoscere la posizione ed il nome dei file di log puoi provare a sbirciare nel file di configurazione di Apache oppure, più semplicemente, puoi provare a digitare nella Shell del tuo server Linux la seguente istruzione:

locate access.log

oppure

locate access_log

Se il file ha questo nome il sistema ne restituirà la posizione (in caso contrario bisognerà raffinare la ricerca o leggere nel file https.conf).

Leggere i file di log

I file di log sono dei semplici file di testo. Per leggere il contenuto dei file di log basta effettuarne il download via FTP ed aprirli con un comune editor testuale come, ad esempio, il Blocco Note di Windows.

In alternativa possiamo leggere i file di log anche attraverso la Shell del nostro server. Vediamo come attraverso alcuni semplici esempi.

1) Visualizzare cosa accade in tempo reale

tail -f /var/log/apache2/access.log

Il sistema mostrerà le nuove righe che vengono via via scritte nel file, in tempo reale.

2) Visualizzare le ultime 100 righe scritte nel log

tail -100 /var/log/apache2/access.log

3) Cercare un termine specifico

grep ".jpg" /var/log/apache2/access.log

Così facendo otterremo solo le righe che riguardano file JPG.

4) Cercare le attività di uno specifico indirizzo IP

grep "123.123.123.123" /var/log/apache2/access.log

Svuotare un file di log troppo pesante

Per resettare un file di log puoi utilizzare il seguente comando tramite Shell:

truncate -s 0 /var/log/apache2/access.log

E’ bene ricordare, tuttavia, che per siti in produzione è buona norma utilizzare un sistema di log rotatation che effettui periodicamente l’archiviazione dei log (ad esempio su base giornaliera) al fine di evitare di avere a che fare con file di log di alcuni GB che sarebbero molto difficili da manipolare.

Pubblicità
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.