Categorie
Web development WordPress

Effettuare logging WordPress in files separati

WordPress permette di effettuare il logging di informazioni tramite l’utilizzo delle costanti WP_DEBUG e WP_DEBUG_LOG.

Impostando nel file wp-config.php entrambe le costanti a true, WordPress scriverà i logs nel file wp-content/debug.log.

Con questa configurazione attiva, se in un file scrivessimo

error_log("log di test");

nel file debug.log troveremo qualcosa simile a

[09-Feb-2021 00:01:03 UTC] log di test

Questa soluzione tuttavia non è flessibile, perché nel tempo il file debug.log crescerebbe di dimensione, rendendo poco pratico effettuare debug utilizzando i logs.

Logging WordPress su più files

WordPress permette di scrivere su files diversi da wp-content/debug.log.

Per farlo, è necessario impostare il valore della costante WP_DEBUG_LOG al valore del path desiderato per il file di log.

Poiché questa costante viene impostata nel file wp-config.php, possiamo scegliere di impostare il path in maniera statica, oppure di farlo in maniera dinamica.

Impostare il log path in maniera statica

Analogamente a quanto specificato nell’articolo dedicato all’errore 500 in WordPress, è possibile definire il percorso del file di log, inserendo nel file wp-config.php

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Utilizzando questo codice, WordPress scriverà i logs nel file /tmp/wp-errors.log.

Impostare il log path in maniera dinamica

Questo approccio è sicuramente quello più flessibile, perché consente, ad esempio, di scrivere i logs in files diversi, a seconda di determinate condizioni.

Poniamo di volere che i files di log vengano scritti in un path del tipo wp-content/logs/*.log, e di fare in modo che il file sia nominato secondo la data odierna, in particolare secondo il formato YYYY-MM-DD.log.

Per ottenere questo risultato, è necessario utilizzare il seguente codice nel file wp-config.php

$log_path = __DIR__ . "/wp-content/logs/" . date("Y-m-d") . ".log";
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', $log_path );

Così facendo, il valore di $log_path cambierà in funzione della data odierna, permettendo di ottenere un percorso di logging che varia ogni giorno.

Chiaramente, è possibile cambiare il formato della data cambiando il modo in cui $log_path è definito.

Alcuni esempi di utilizzato della funzione date() di PHP sono disponibili nella documentazione ufficiale di PHP.

Note di sicurezza

Per motivi di sicurezza, è importante che i logs di WordPress non siano di dominio pubblico.

Per evitare che ciò accada, se WordPress è eseguito in un server HTTP Apache, è sufficiente inserire un file .htaccess che neghi l’accesso diretto, facendo uso della direttiva “Deny From All”.

Nell’esempio di prima, sarà necessario creare un file .htaccess che conterrà

Deny From All

e dovrà essere posizionato nella cartella wp-content/logs/.

Quindi, dovrai aprire il browser e provare ad accedere direttamente un file .log presente nella cartella.

Se il file .htaccess funziona correttamente, dovresti ottenere un HTTP response code 403 (Unauthorized).

Conclusioni logging WordPress

In questo articolo abbiamo analizzato alcune configurazioni utili per effettuare logging in WordPress.

Seguimi su