Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
J'essaye de persévérer avec la doc pour ne pas trop vous embêter mais c'est pas toujours évident...
Voilà mon problème, je n'arrive pas vraiment à comprendre comment fonctionne Zend_Log.
Voici ce que j'ai compris:
Chaque responsabilité de journalisation est distribuée dans différentes classes : - Zend_Log, est la classe centrale - Zend_Log_Writer, est chargée d’enregistrer les informations dans les journaux - Zend_Log_Filter, sélectionne les informations à traiter via un ensemble de filtres possibles - Zend_Log_Formatter, prépare les informations avant de les enregistrer Pour simplifier Zend_Log est un enregistreur. Il dispose d’un (ou plusieurs) rédacteur (writer) capable de récupérer des informations à stocker. Un rédacteur dispose d’un ou plusieurs filtres pour ne garder qu’une partie des informations et d’un formateur qui prépare les données à enregistrer. La classe Zend_Log définit différentes priorités comme EMERG, ALERT, etc. Un nouvel élément s'ajoute avec setEventItem() et le format d'enregistrement se définit via setFormatter.
Voici le début de création d'un fichier de log :
// Création de l’objet $journal $journal = new Zend_Log() ; // Ajout d’un rédacteur $redacteur1 = new Zend_Log_Writer_Stream("php://output") ; $journal->addWriter($redacteur1) ; // Ajout d'un événement $journal->setEventItem('client_ip', $_SERVER['REMOTE_ADDR']); // Définition du format du fichier de log $format = '[%timestamp%] IP : %client_ip% ' ; $formateur = new Zend_Log_Formatter_Simple($format); $redacteur1->setFormatter($formateur);
Ce code ne produit strictement rien dans mon fichier de log. Si toutefois j'ajoute " $journal->info('Message :') " alors j'ai bien un petit bout d'informations enregistré (la date avec la chaine "Message :") qui ne contient pas mon IP.
Mes interrogations, comment déclencher un enregistrement lorsqu'un évènement précis se produit et à quel moment intervient le niveau de criticité ?
Merci d'avance
Dernière modification par miboo (26-02-2009 18:34:11)
Hors ligne
Là tu as juste initialiser ton logger. Après pour envoyer un log tu peux par exemple utiliser :
$journal->log("toto",Zend_Log::DEBUG);
Ensuite si le log que tu viens d'envoyer n'est pas filtré, il est ajouté à ton log suivant le format que tu as spécifié.
A+, Philippe
Hors ligne
Merci de ton aide
Si je reprends mon code en rajoutant quelques lignes:
// Création de l’objet $journal $journal = new Zend_Log() ; // Ajout d’un rédacteur $redacteur1 = new Zend_Log_Writer_Stream("php://output") ; $journal->addWriter($redacteur1) ; // Ajout d'un événement $journal->setEventItem('client_ip', $_SERVER['REMOTE_ADDR']); // Définition du format du fichier de log $format = '[%timestamp%] IP : %client_ip% ' ; $formateur = new Zend_Log_Formatter_Simple($format); $redacteur1->setFormatter($formateur); [b]$journal->log("toto", Zend_Log::INFO);[/b]
Effectivement, les informations de date et d'adresse ip s'affiche correctement à l'écran.
En revanche, si je ne définit pas un format précis cela m'affiche "%la_date% INFO (6) : toto".
Pour afficher des informations particulières saisies avec setEventItem il faut nécessaire modifier le format de sortie?
Dernière modification par miboo (04-03-2009 12:43:25)
Hors ligne
Deuxième question,
Si je veux faire un fichier de log avec un traitement spécifique. Imaginons que je veuille par exemple afficher un message d'alerte si je dépasse les 10.000 enregistrement dans ma base utilisateurs.
Est-ce que c'est possible et est-ce que cela marche comme ça :
public function detection_ base {
//mon code qui vérifie si la base est pleine et qui renvoie une valeur booléenne
si true alors $journal -> info ('alerte la base utilisateurs a atteint 10000 utilisateurs', Zend_Log::INFO);
}
Pour être plus clair, je veux savoir comment faire pour que soit associer un message d'information avec un niveau de criticité à un traitement spécifique.
Dernière modification par miboo (20-03-2009 10:51:17)
Hors ligne
miboo a écrit:
Deuxième question,
Si je veux faire un fichier de log avec un traitement spécifique. Imaginons que je veuille par exemple afficher un message d'alerte si je dépasse les 10.000 enregistrement dans ma base utilisateurs.
Est-ce que c'est possible et est-ce que cela marche comme ça :
public function detection_ base {
//mon code qui vérifie si la base est pleine et qui renvoie une valeur booléenne
si true alors $journal -> info ('alerte la base utilisateurs a atteint 10000 utilisateurs', Zend_Log::INFO);
}
Pour être plus clair, je veux savoir comment faire pour que soit associer un message d'information avec un niveau de criticité à un traitement spécifique.
j'ai mis à jour ma question
Dernière modification par miboo (06-03-2009 02:14:12)
Hors ligne
Personne?
Hors ligne