Position actuelle: Accueil> Derniers articles> Cas pratique: extraire les dernières informations d'erreur basées sur les données de journal

Cas pratique: extraire les dernières informations d'erreur basées sur les données de journal

M66 2025-06-02

Pendant le processus de développement et de fonctionnement et de maintenance, les fichiers journaux sont généralement la base principale pour nous de résoudre les problèmes et d'obtenir des informations d'erreur. Les fichiers journaux peuvent être très importants, nous avons donc besoin d'un moyen rapide et efficace d'extraire les dernières informations d'erreur. En PHP, vous pouvez facilement y parvenir en utilisant la fonction fin () .

Cet article utilisera un cas pratique pour montrer comment extraire rapidement les dernières informations d'erreur en combinant les données de journal et la fonction End () de PHP.

Description de la scène

Supposons que nous ayons un fichier journal error.log , qui contient des informations d'erreur lorsque le programme est exécuté, et un événement d'erreur est enregistré dans chaque ligne. Le contenu du fichier journal est le suivant:

 [2025-04-20 14:00:05] ERROR: Unable to connect to database
[2025-04-20 14:01:23] ERROR: Invalid API key
[2025-04-20 14:05:10] ERROR: m66.net/api/v1/invalid-endpoint
[2025-04-20 14:06:00] ERROR: Server timeout
[2025-04-20 14:07:30] ERROR: Unauthorized access attempt

Notre objectif est d'extraire le dernier message d'erreur dans le fichier journal, à savoir la tentative d'accès non autorisée .

Étape 1: Lisez le fichier journal

Tout d'abord, nous devons ouvrir et lire le fichier journal. La fonction File () de PHP est très adaptée à la lecture des fichiers et au renvoi du contenu des fichiers en tant que tableau. Chaque élément de tableau correspond à une ligne du fichier.

 <?php
// Lisez le fichier journal et enregistrez chaque ligne dans un tableau
$logFile = 'error.log';
$logData = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Données de journal de sortie(Facultatif)
foreach ($logData as $line) {
    echo $line . PHP_EOL;
}
?>

Dans le code ci-dessus, nous utilisons la fonction file () pour lire le fichier error.log et supprimons la rupture de ligne à la fin de la ligne via le paramètre file_ignore_new_lines , et ignorez les lignes vierges à l'aide de file_skip_empty_lines .

Étape 2: Utilisez la fonction fin () pour extraire les dernières informations d'erreur

Dans PHP, la fonction END () peut pointer le pointeur du tableau vers le dernier élément du tableau et renvoyer cet élément. Étant donné que les fichiers journaux enregistrent les erreurs dans l'ordre chronologique, la dernière erreur est les dernières informations d'erreur dont nous avons besoin.

 <?php
// Obtenez le dernier message d&#39;erreur
$latestError = end($logData);

// Sortir le dernier message d&#39;erreur
echo "Dernier message d&#39;erreur: " . $latestError;
?>

Ici, nous appelons la fonction fin () pour obtenir le dernier message d'erreur dans le tableau. $ DermterError contiendra le dernier enregistrement de journal.

Étape 3: Extraire et afficher le message d'erreur

Si nous ne sommes intéressés que par le contenu spécifique du message d'erreur, nous pouvons extraire le contenu d'erreur de chaque ligne du journal via des expressions régulières. Par exemple, nous pouvons extraire la description de l'erreur après l'erreur :.

 <?php
// Extraire et sortir la dernière description d&#39;erreur
if (preg_match('/ERROR: (.+)/', $latestError, $matches)) {
    echo "Dernière description d&#39;erreur: " . $matches[1];
} else {
    echo "Échec de l&#39;extraction de description d&#39;erreur";
}
?>

Dans cet exemple, preg_match () est utilisé pour faire correspondre la partie du message d'erreur dans la ligne de journal. L'expression régulière '/ erreur: (. +) /' Correspond à tout après l'erreur: et le stocke dans le tableau $ correspond .

Exemple de code complet

 <?php
// Lisez le fichier journal et enregistrez chaque ligne dans un tableau
$logFile = 'error.log';
$logData = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// Obtenez le dernier message d&#39;erreur
$latestError = end($logData);

// Extraire et sortir la dernière description d&#39;erreur
if (preg_match('/ERROR: (.+)/', $latestError, $matches)) {
    echo "Dernière description d&#39;erreur: " . $matches[1];
} else {
    echo "Échec de l&#39;extraction de description d&#39;erreur";
}
?>

Résumer

En combinant la fonction End () de PHP et l'expression régulière, nous pouvons rapidement extraire les dernières informations d'erreur du fichier journal. Cette méthode convient particulièrement aux situations où les fichiers journaux sont relativement importants et peuvent réduire efficacement la consommation de mémoire et améliorer la vitesse de traitement.

Bien sûr, le format d'erreur de chemin de fichier journal.log et de journal dans l'exemple de code ci-dessus doit être ajusté en fonction de votre projet réel. De plus, dans le développement réel, vous pouvez également traiter davantage les fichiers journaux, tels que l'affichage des journaux historiques sur les pages, le filtrage des journaux par période de temps, etc.