{"id":229613,"date":"2022-11-09T17:09:00","date_gmt":"2022-11-09T14:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229613"},"modified":"2022-11-09T17:14:19","modified_gmt":"2022-11-09T14:14:19","slug":"interface-de-journalisation-psr-et-pourquoi-la-journalisation-est-importante","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/interface-de-journalisation-psr-et-pourquoi-la-journalisation-est-importante\/","title":{"rendered":"Interface de journalisation PSR (et pourquoi la journalisation est importante)"},"content":{"rendered":"\n<p>Deux fonctionnalit\u00e9s de PHP qui, \u00e0 mon avis, sont souvent surutilis\u00e9es en mati\u00e8re de &quot;d\u00e9bogage&quot; utilisent <a href=\"https:\/\/php.net\/manual\/en\/function.echo.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">echo<\/a> et <a href=\"https:\/\/php.net\/manual\/en\/function.var-dump.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">var_dump<\/a>. J&rsquo;en ai parl\u00e9 dans quelques articles diff\u00e9rents sur le d\u00e9bogage (comme <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/utiliser-xdebug-avec-valet-et-wordpress\/\" title=\"ici\">ici<\/a> et <a href=\"https:\/\/tommcfarlin.com\/debugging-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ici<\/a> ).<\/p>\n<p>Et m\u00eame si je suis fan de l&rsquo;utilisation d&rsquo;un d\u00e9bogueur, je pense qu&rsquo;il est \u00e9galement important d&rsquo;impl\u00e9menter un type de syst\u00e8me de journalisation afin que vous ou votre client puissiez revenir en arri\u00e8re et revoir l&rsquo;activit\u00e9 qui s&rsquo;est produite dans le syst\u00e8me au fur et \u00e0 mesure qu&rsquo;eux-m\u00eames ou leurs utilisateurs l&rsquo;ont fait. \u00e9t\u00e9, vous savez, l&rsquo;utiliser.<\/p>\n<p>Cependant, il y a deux aspects \u00e0 faire, surtout si vous cherchez \u00e0 suivre l&rsquo;interface de journalisation PSR et ils sont :<\/p>\n<ol>\n<li>les r\u00e8gles de l&rsquo;interface de journalisation proprement dite,<\/li>\n<li>un projet qui impl\u00e9mente correctement ladite interface de journalisation.<\/li>\n<\/ol>\n<p>Alors pourquoi ne pas aborder les deux dans cet article\u00a0?<\/p>\n<h2>L&rsquo;interface de journalisation PSR<\/h2>\n<p>L&rsquo; <a href=\"http:\/\/www.php-fig.org\/psr\/psr-3\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interface de journalisation PSR<\/a> (ou PSR-3) couvre un certain nombre de choses que vous pouvez lire plus en d\u00e9tail sur la page actuelle.<\/p>\n<p>Ceux-ci inclus:<\/p>\n<ol>\n<li>Les bases<\/li>\n<li>messages<\/li>\n<li>Le contexte<\/li>\n<li>Classes d&rsquo;assistance<\/li>\n<li>Paquets<\/li>\n<li>Interfaces<\/li>\n<li>Niveaux de journalisation<\/li>\n<li>Et plus.<\/li>\n<\/ol>\n<p>Mais pour les besoins de cet article, je veux parler sp\u00e9cifiquement de l&rsquo;interface elle-m\u00eame, d&rsquo;un projet qui l&rsquo;impl\u00e9mente et pourquoi c&rsquo;est important.<\/p>\n<h3>L&rsquo;interface de journalisation<\/h3>\n<p>La page d&rsquo;accueil de la documentation indique :<\/p>\n<blockquote>\n<p>Ce document d\u00e9crit une interface commune pour la journalisation des biblioth\u00e8ques.<\/p>\n<p>L&rsquo;objectif principal est de permettre aux biblioth\u00e8ques de recevoir un objet PsrLoggerInterface et d&rsquo;y \u00e9crire des journaux de mani\u00e8re simple et universelle.<\/p>\n<\/blockquote>\n<p>Du point de vue du d\u00e9veloppement, c&rsquo;est bien, non\u00a0? Je veux dire, cela fournit un moyen unique et coh\u00e9rent sur lequel nous pouvons parier pour la biblioth\u00e8que de journalisation que nous choisissons d&rsquo;utiliser dans nos projets. Je couvrirai ma biblioth\u00e8que pr\u00e9f\u00e9r\u00e9e plus tard dans l&rsquo;article.<\/p>\n<p>Pour ceux qui d\u00e9couvrent la programmation orient\u00e9e objet ou qui sont simplement curieux de savoir comment une interface coh\u00e9rente nous profite, pensez-y de cette fa\u00e7on\u00a0: quel que soit le syst\u00e8me que vous choisissez, vous \u00eates assur\u00e9 d&rsquo;avoir un certain ensemble de fonctions, d&rsquo;\u00e9tats, etc. pouvez utiliser dans votre application.<\/p>\n<p>En fin de compte, l&rsquo;ajout d&rsquo;un syst\u00e8me de journalisation qui a une norme qu&rsquo;il doit suivre offre une vari\u00e9t\u00e9 d&rsquo;avantages quelle que soit la biblioth\u00e8que que vous choisissez (tant qu&rsquo;elle est conforme \u00e0 PSR-3).<\/p>\n<h3>Essayez Monologue<\/h3>\n<p><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a> est plus ou moins l&rsquo;utilitaire de journalisation de facto pour les applications PHP.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166191-61e78fbe1b295.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166191-61e78fbe1b295.png\" alt=\"Interface de journalisation PSR (et pourquoi la journalisation est importante)\"><\/a><\/p>\n<p>Il est facile d&rsquo;ajouter le projet via <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>, mais il inclut \u00e9galement diff\u00e9rentes mani\u00e8res de g\u00e9n\u00e9rer des donn\u00e9es\u00a0:<\/p>\n<blockquote>\n<p>Monolog envoie vos journaux vers des fichiers, des sockets, des bo\u00eetes de r\u00e9ception, des bases de donn\u00e9es et divers services Web. Voir la liste compl\u00e8te des gestionnaires ci-dessous. Des gestionnaires sp\u00e9ciaux vous permettent de cr\u00e9er des strat\u00e9gies de journalisation avanc\u00e9es.<\/p>\n<\/blockquote>\n<p>Personnellement, je ne l&rsquo;ai utilis\u00e9 que dans le cadre de l&rsquo;envoi de sorties vers des fichiers\u00a0; cependant, avoir la possibilit\u00e9 de le sortir sur d&rsquo;autres syst\u00e8mes (en particulier des bases de donn\u00e9es comme lorsque vous travaillez avec WordPress) est agr\u00e9able. Bien s\u00fbr, vous ne voulez pas abuser de cette capacit\u00e9.<\/p>\n<p>Deuxi\u00e8mement, il est important de reconna\u00eetre que bien que vous puissiez instancier le Logger dans une fonction ou une autre classe, il existe d&rsquo;autres moyens plus orient\u00e9s objet de le faire. PSR-3 couvre cela (comme mentionn\u00e9 ci-dessus).<\/p>\n<p>En bref, vous voulez vous assurer que votre classe accepte une instance d&rsquo;une classe qui impl\u00e9mente LoggerInterface. Monolog impl\u00e9mente ladite interface, donc ce n&rsquo;est pas un probl\u00e8me.<\/p>\n<p>De plus, que se passe-t-il lorsque vous avez un groupe de classes li\u00e9es qui doivent toutes impl\u00e9menter la journalisation\u00a0?<\/p>\n<ul>\n<li>Ces classes h\u00e9ritent-elles d&rsquo;un parent commun\u00a0?<\/li>\n<li>Ces classes impl\u00e9mentent-elles un <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.traits.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">trait<\/a>? (C&rsquo;est une option qu&rsquo;un ami m&rsquo;a r\u00e9cemment pr\u00e9sent\u00e9e.)<\/li>\n<li>Chaque classe accepte-t-elle simplement la d\u00e9pendance via l&rsquo;injection de constructeur\u00a0?<\/li>\n<\/ul>\n<p>Il existe diff\u00e9rentes fa\u00e7ons d&rsquo;ajouter des enregistreurs \u00e0 une classe et cela d\u00e9pend de la fa\u00e7on dont votre projet est organis\u00e9.<\/p>\n<h2>En savoir plus sur la journalisation<\/h2>\n<p>Dans tous les cas, l&rsquo;introduction de la journalisation dans une application est importante pour diverses raisons, telles que la possibilit\u00e9 de d\u00e9panner lorsque quelque chose ne se comporte pas comme pr\u00e9vu \u00e0 la fois dans le d\u00e9veloppement, la mise en sc\u00e8ne et surtout en production.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si vous cherchez \u00e0 suivre l&rsquo;interface de journalisation PSR, assurez-vous de revoir PSR-3 et consultez Monolog qui impl\u00e9mente ladite interface de journalisation.<\/p>\n","protected":false},"author":1,"featured_media":166192,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,841],"tags":[1167],"class_list":["post-229613","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229613"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229613\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/166192"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}