Aller au contenu

PHP : Script de monitoring de fichier par « keyword »

<?php
// Le mot-clé à rechercher
$keyword = "erreur";

// Chemin vers le fichier journal
$log_file = 'myapp.log';

//Connexion à la base de données
$db = new PDO('mysql:host=localhost;dbname=logs;charset=utf8mb4', 'username', 'password');

// Ouvrir le fichier journal en lecture seule
$log_file_handle = fopen($log_file, 'r');

// Lire toutes les lignes du journal
while (($log_line = fgets($log_file_handle)) !== false) {
    if (strpos($log_line, $keyword) !== false) {
        // Le mot-clé a été trouvé dans la ligne, vérifier si la ligne a déjà été traitée
        $query = $db->prepare("SELECT COUNT(*) FROM processed_logs WHERE log_line = :log_line");
        $query->execute(array(':log_line' => $log_line));
        $count = $query->fetchColumn();
        if ($count == 0) {
            // La ligne n'a pas encore été traitée, créer un événement
            createEvent($log_line);
            // Enregistrer la ligne dans la base de données pour éviter de la traiter à nouveau
            $query = $db->prepare("INSERT INTO processed_logs (log_line) VALUES (:log_line)");
            $query->execute(array(':log_line' => $log_line));
        }
    }
}

// Fermer le fichier journal
fclose($log_file_handle);

/**
 * Fonction pour créer un événement
 * @param string $log_line La ligne de journal contenant le mot-clé
 */
function createEvent($log_line) {
    // Insérer le code pour créer l'événement ici
    // Par exemple, enregistrer l'événement dans une base de données, envoyer une notification, etc.
    echo "Création d'un événement: $log_line";
}

?>
Étiquettes:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *