J'ai configuré log4php pour vous connecter à un fichier à l'aide du LoggerAppenderRollingFile Appender et le LOGGERLAYOutTTCC Layout. Lorsque je me connecte une exception, cependant, il n'affiche pas les détails d'exception telles que la trace de la pile comme si je suis habitué à voir dans log4net. p>
J'ai un coup d'œil rapide à travers le code et on dirait que le LoggerAppenderMongodb a la prise en charge de l'affichage des exceptions avec le Méthode informatique code>
, mais je ne vois rien de similaire dans les autres annexes. p>
Je me sens comme si on me manque quelque chose d'évident. Y a-t-il quelque chose que je dois configurer pour imprimer ces informations sur le fichier journal? Dois-je créer une classe de LoggerAppender personnalisée? Ou peuvent-ils être effectués avec une mise en page différente ou un rendu personnalisé? P>
4 Réponses :
Vous devez utiliser la fonction PHP Set_Exception_Handler et envelopper Log4php à l'aide de cette fonction.
Vérifiez-le à: http://php.net/manual/fr/ fonction.set-exception-manutention.php log-> débogage ($ exception-> getMessage ());
} p> set_exception_handler ('excepte_handler'); p> p>
Je suis arrivé à la même conclusion: il semble que Log4phP ne fait que quelque chose avec le paramètre Le < Code> LoggerAppenderFile Code> La classe de base repose sur la mise en page, J'ai ajouté ma propre classe de mise en page qui étend le format LOGGERLAYOUTTTCC et le remplacement () p> jethable code> dans le
loggerAppenderMongodb.php code> Appendender.
LOGGERLAYOutTTCC code>, pour formater le message (comme on pourrait s'y attendre). Cette classe a une méthode
ignoresthrowable () code>, qui retourne vrai. Bien que cette méthode ne semble pas être appelée, elle communique légèrement que les auteurs ne semblaient pas avoir l'intention de prendre une note de l'erreur. P>
FYI, maintenant que Voir la section Exceptions de journalisation des documents: http://logging.apache.org/log4php/docs/layouts/pattern.html#logging_exceptions p> p> LOGGERLAYOUTTTTCC code> est obsolète, vous pouvez utiliser LOGGERLAYOutPattern avec une chaîne de format mieux pour inclure des exceptions.
Il m'a fallu un moment pour déterminer pourquoi le nom du fichier d'origine et le numéro de ligne n'étaient pas enregistrés par log4php strong> lorsqu'une exception est lancée. Il s'est avéré que ma classe N'oubliez pas d'enregistrer le gestionnaire personnalisé: p> exception_handler > enregistrait uniquement le message d'exception (en faisant
$ exception-> getMessage () code>), qui ne contient pas le nom de fichier ni la ligne numéro. Tout ce que je dois faire est de concaténer cette information:
$ exception-> getfile () code> et
$ excepte-> getline () code>: