Pendant le développement de PHP, nous devons souvent déboguer les opérations de la base de données MySQL. MySQLI :: Debug est un outil très utile qui peut produire des informations de débogage. Bien que MySQLI :: débogue les résultats de débogage des informations sur le navigateur ou la console par défaut, nous devons parfois enregistrer ces informations sur un serveur de journaux distant pour un dépannage et une analyse plus faciles à l'avenir.
Cet article expliquera en détail comment enregistrer MySQLI :: Debug la sortie vers un serveur de journaux distant et utiliser des exemples de code pour afficher le processus d'implémentation spécifique.
MySQLI :: Debug est une méthode en PHP pour permettre la fonction de débogage de MySQL. Il peut afficher des informations de débogage détaillées sur les requêtes MySQL, y compris les instructions SQL exécutées, le temps d'exécution, les informations d'erreur, etc. Ceci est très utile pour les développeurs lors de l'exécution des opérations de base de données.
Exemple d'utilisation:
mysqli::debug("d:t:o,/tmp/mysql_trace.log");
Le code ci-dessus permettra la fonction de débogage de MySQL et enregistrera les informations de débogage dans le fichier spécifié (tel que /tmp/mysql_trace.log ).
Afin d'envoyer des informations de débogage au serveur de journaux distants, nous pouvons les implémenter de la manière suivante:
La fonction Error_Log de PHP peut écrire des erreurs ou déboguer des informations dans un fichier spécifié ou l'envoyer à un serveur de journaux sur le réseau. Nous pouvons utiliser la sortie d'informations de débogage de MySQLI :: Debug et la transférer au serveur de journal distant via la fonction error_log .
L'exemple de code est le suivant:
<?php
// Définir le mode de débogage
mysqli::debug("d:t:o,/tmp/mysql_trace.log");
// Informations de débogage de sortie sur le serveur de journaux distants
function log_to_remote_server($message) {
$url = 'http://m66.net/log_receiver'; // Supposons que la réception du serveur de journaux distantes URL
$data = ['log' => $message];
// utiliser cURL Envoyer des journaux au serveur distant
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Exécutez une demande et obtenez une réponse
$response = curl_exec($ch);
curl_close($ch);
// Si nécessaire,La réponse peut être traitée
if ($response) {
echo "Le journal a été envoyé avec succès au serveur distant。\n";
} else {
echo "Échec de l'envoi du journal。\n";
}
}
// Appeler la fonction pour envoyer des informations de débogage au serveur distant
log_to_remote_server("Ceci est un exemple d'information de débogage");
?>
Dans cet exemple, nous envoyons des informations de journal à http://m66.net/log_receiver via la demande de curl . Vous pouvez modifier l'URL du serveur de journal distant et le format de données transmis en fonction de la situation réelle.
Si vous utilisez des outils de collecte de journaux (tels que Elk Stack, Graylog, Splunk, etc.) sur votre système, vous pouvez envoyer des informations de journal à un serveur distant via ces outils. Cela implique généralement la configuration du service de collecte de journaux correspondant et le transfert à l'aide de la sortie des informations de journal de MySQLI :: Debug .
Par exemple, supposons que nous ayons configuré un outil de collecte de journaux, et ce qui suit est le code pour écrire les journaux dans un fichier via File_put_contents et l'envoyer au système de collecte de journaux distants:
<?php
// Activer le mode de débogage
mysqli::debug("d:t:o,/tmp/mysql_trace.log");
// Écrivez le contenu du journal dans un fichier
function write_log_to_file($message) {
$logFile = '/var/log/php_debug.log';
file_put_contents($logFile, $message . PHP_EOL, FILE_APPEND);
}
// Envoyer du contenu de journal dans le fichier au serveur de collecte de journaux distants
function send_log_to_server($logFile) {
$url = 'http://m66.net/log_receiver'; // Assumer un serveur de journaux distants URL
$logData = file_get_contents($logFile);
// utiliser cURL Envoyer des journaux au serveur distant
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['log' => $logData]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
if ($response) {
echo "Le journal est envoyé avec succès au serveur de journaux distants。\n";
} else {
echo "Échec de l'envoi du journal。\n";
}
}
// Écrire et envoyer des journaux
write_log_to_file("Ceci est les informations du journal de débogage");
send_log_to_server('/var/log/php_debug.log');
?>
Dans cet exemple, le journal est d'abord écrit dans le fichier local, puis envoyé au serveur de collection de journaux distants via Curl .
La journalisation MySQLI :: Debug la sortie vers un serveur de journaux distantes est une astuce très utile, en particulier lors du débogage des problèmes de base de données dans les environnements de production. Nous pouvons facilement y parvenir via la fonction Curl ou l'outil de collecte de journaux de PHP. Espérons que les exemples d'implémentation de cet article vous aideront à mieux comprendre comment envoyer des informations de débogage à un serveur de journaux distant.