Creare Script CLI in PHP per la Gestione di File di Log

by theArchitect
SHARE
Creare Script CLI in PHP per la Gestione di File di Log
© Guida-HTML5.it

Introduzione

La gestione dei file di log è un´attività fondamentale per il monitoraggio delle applicazioni e la risoluzione dei problemi. In questo tutorial, impareremo come creare uno script PHP da eseguire da linea di comando (CLI) per gestire i file di log. Questo script ci permetterà di analizzare, filtrare e formattare i log in modo semplice e veloce. Utilizzeremo PHP per leggere un file di log, filtrare le righe in base a un livello di gravità specifico e generare un nuovo file di log con i risultati.

Codice completo

<?php
// Verifica se il numero corretto di argomenti è stato fornito
if ($argc != 3) {
    echo "Uso: php log_manager.php <file_log> <livello_gravità>n";
    exit(1);
}

// Assegna gli argomenti a variabili
$fileLog = $argv[1];
$livelloGravita = $argv[2];

// Controlla se il file di log esiste
if (!file_exists($fileLog)) {
    echo "Errore: Il file ´$fileLog´ non esiste.n";
    exit(1);
}

// Apre il file di log in modalità lettura
$handle = fopen($fileLog, "r");
if (!$handle) {
    echo "Errore: Impossibile aprire il file ´$fileLog´.n";
    exit(1);
}

// Crea un array per memorizzare le righe filtrate
$righeFiltrate = [];

// Legge il file riga per riga
while (($line = fgets($handle)) !== false) {
    // Filtra le righe in base al livello di gravità
    if (strpos($line, $livelloGravita) !== false) {
        $righeFiltrate[] = $line;
    }
}

// Chiude il file
fclose($handle);

// Genera un nuovo file di log con le righe filtrate
$fileOutput = "filtered_log_".date(´Ymd_His´).".log";
file_put_contents($fileOutput, implode("", $righeFiltrate));

// Stampa un messaggio di completamento
echo "Le righe con livello di gravità ´$livelloGravita´ sono state salvate in ´$fileOutput´.n";
?>

Spiegazione

Analizziamo il codice riga per riga:

  • Verifica degli argomenti: Controlliamo se l´utente ha fornito il numero corretto di argomenti. Se non è così, stampiamo un messaggio di utilizzo e usciamo dallo script.
  • Assegnazione delle variabili: Gli argomenti passati dalla riga di comando vengono assegnati a variabili per una gestione più semplice.
  • Controllo dell´esistenza del file: Verifichiamo se il file di log esiste. Se non esiste, stampiamo un messaggio di errore e usciamo.
  • Apertura del file: Apriamo il file di log in modalità lettura. Se non riusciamo ad aprirlo, stampiamo un messaggio di errore.
  • Filtraggio delle righe: Leggiamo il file riga per riga e filtriamo le righe in base al livello di gravità specificato. Utilizziamo strpos per verificare se la riga contiene il livello di gravità.
  • Chiusura del file: Una volta completata la lettura, chiudiamo il file.
  • Generazione del file di output: Creiamo un nuovo file di log che contiene solo le righe filtrate. Il nome del file include la data e l´ora correnti per evitare conflitti.
  • Messaggio di completamento: Infine, stampiamo un messaggio che indica il completamento dell´operazione.

Best practice

  • Gestione degli errori: È importante gestire gli errori in modo appropriato, come abbiamo fatto controllando l´esistenza del file e la possibilità di apertura.
  • Documentazione: Commenta il codice per rendere più chiaro il funzionamento dello script, specialmente se il codice sarà utilizzato da altri sviluppatori.
  • Utilizzo di funzioni: Per migliorare la leggibilità e la manutenibilità, considera di suddividere il codice in funzioni, ad esempio una funzione per il filtraggio e una per la scrittura del file.
  • Testare con diversi livelli di gravità: Assicurati di testare lo script con vari livelli di gravità per garantire che funzioni correttamente in tutti i casi.

Riepilogo

In questo tutorial, abbiamo creato uno script PHP CLI per la gestione dei file di log. Abbiamo imparato a filtrare le righe in base a un livello di gravità specifico e a generare un nuovo file di log con i risultati. Questo tipo di script può essere molto utile per analizzare i log delle applicazioni e semplificare il processo di debug.

Approfondisci con risorse ufficiali

SHARE