Comment puis-je enregistrer des journaux dans PHP? Existe-t-il une fonction "magique" disponible en PHP pour le faire, ou une bibliothèque? Ou devrais-je avoir à Merci d'avance :) p> fopen code> fichier à chaque fois et vider-ci? Je veux enregistrer mes journaux dans le fichier texte. P>
5 Réponses :
Tout dépend de ce que vous essayez de vous connecter. Par défaut, vous aurez déjà un fichier ERROR_LOG qui est essentiellement un fichier texte brut. Si vous parlez d'événements de journalisation dans votre code pour le débogage ou l'activité de suivi dans un script, vous devrez écrire votre propre gestionnaire de journal pour cela, mais c'est très simple. Comme une autre affiche indique que vous pouvez appuyer sur le contenu du journal d'erreur à l'aide de la fonction ERROR_LOG (), mais cela permettrait à certains fichiers journaux très non gênants IMV. P>
Si vous ne souhaitez pas utiliser sa propre implémentation ou simplement faire fopen-trucs, vous utilisez la fonction intégrée error_log ('string to journal'); code>. Cela écrira la chaîne souhaitée dans le journal des erreurs de votre logiciel serveur. P>
PHP vous permet de configurer ce que l'enregistreur par défaut utilise le paramètre error_log code> php.ini: PHP .NET / erreur-journal
J'ai écrit une classe simple pour le faire. Peut-être que vous le trouverez utile.
Merci Alex JL, mais cela sonne nouveau à moi $ this-> app_id = auto :: real_unique_string () code>. Comment fonctionnera le processus d'identification pour les journaux? Comment l'identifiant de processus peut-il m'aider plus tard lorsque je vis des journaux?
J'utilise le processus de processus pour rester là où la ligne provient de droite. Il sera unique par page avec le journal, alors dites que vous avez 5 personnes accéder à votre page à la fois - il y aura juste une inondation de lignes dans le journal. L'ID Cela vous aide à savoir quelles lignes sont venues du même processus. Vous pouvez toujours retirer cela si vous n'en avez pas besoin.
Cela semble être une version extrêmement compliquée de php error_log ($ message, 3, $ log_name); code>
@R. Bemrose Cela vient d'envelopper Fopen et F Close avec quelques commodités ... Je ne vois pas comment cela pourrait être considéré comme «extrêmement compliqué».
Ok merci alex jl. Maintenant j'ai compris.
@R. Bemrose Ce n'est pas du tout compliqué. La seule chose que je n'ai pas comprise jusqu'à présent, c'est que le deuxième paramètre passe à la fonction de hachage ( microtime (1) (heure () / 147)) code>).
@ALEX JL: OK, laissez-moi reformuler cela. Ceci semble être un complètement non synchronisé B> de réimplémentation du error_log ($ MSG, 3, $ log_name) code> Fonction ou simplement à l'aide d'un Error_Log de PHP.INI < / Code> Réglage INI Pour envoyer le gestionnaire d'erreur par défaut à un fichier et à l'aide d'un fichier error_log ($ msg) code>.
@R. Bemrose Non, ce n'est pas vrai. Il fournit une commodité supplémentaire comme A> Vérification du fichier journal existant et fournissant une valeur par défaut (il devrait probablement vérifier qu'il est écritable, en réalité) B> Ajout automatique d'un identifiant de processus, d'un nom de page, d'une date et d'une nouvelle ligne après votre message. J'aurais pu utiliser Error_Log au lieu de fopen / fwrite / fclose, mais cela semble plutôt non valable si vous n'êtes pas d'enregistrement d'erreurs. Je voudrais probablement envelopper Errrist_Log comme ceci pour fournir les fonctionnalités susmentionnées de toute façon.
@Nitesh Panchal Honnêtement, la fonction real_unique_id est plutôt superflue ... cette partie pourrait être remplacée par simplement UNIQID (). Cela venait d'un autre code que j'ai, en fait. Je l'ai édité pour le rendre plus simple.
Si vous n'êtes pas dans l'utilisation des fonctions de traitement des erreurs PHP ( http: //www.php.net/manual/fr/ref.errorfunc.php ) que les autres réponses ont mentionnées, voici une classe d'enregistreur simple meurtrière que j'ai utilisée auparavant. Les avertissements standard s'appliquent, comme je ne l'ai pas utilisé dans une application à haut risque ou sur un site lourdement trafiquant (bien que cela soit bien).
<?php
require('Logger.php');
Logger::debug('test');
Logger::warn('bwah');
Logger::info('omg');
?>
Heureux que vous l'aimiez, et merci pour le vote. Et oui, il s'agit d'un exemple de livre de texte de quand utiliser static. Acclamations.
La dernière réponse est de 2010, il a donc besoin d'une bouffée d'air frais. Je partage avec vous ma classe PHP que j'utilise dans mes programmes.
J'ai suivi une approche similaire de i Mettez ma classe dans @ sam-bisbee de la réponse du code> de Sam-Bisbee, il est donc facile d'ajouter de nouvelles fonctionnalités et de nouvelles fonctionnalités, mais je l'ai également rendue plus flexible à utiliser dans différents programmes / scripts. logg.php code>, vous pouvez le faire également. P> My Class H2>
//this:
{
//logging information to different file in different path
Logg::addInfo(['Some info', 15], 'AnotherFileName', '/some/different/path/');
}
//is equal to this:
{
//changing filename and path
Logg::$fileName = 'AnotherFileName';
Logg::$filePath = '/some/different/path/';
//logging information
Logg::addInfo(['Some info', 15]);
//changing filename and path back to its original values
Logg::$fileName = 'ExampleName_'.date("Y_m_d");
Logg::$filePath = 'C:/Apache24/htdocs/public_html/logs/';
}
Je veux juste que les données Print_R. quelque chose pour ça?