{"id":229321,"date":"2022-11-09T16:52:00","date_gmt":"2022-11-09T13:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229321"},"modified":"2022-11-09T16:54:06","modified_gmt":"2022-11-09T13:54:06","slug":"interfaz-de-registro-de-psr-y-por-que-es-importante-el-registro","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/interfaz-de-registro-de-psr-y-por-que-es-importante-el-registro\/","title":{"rendered":"Interfaz de registro de PSR (y por qu\u00e9 es importante el registro)"},"content":{"rendered":"\n<p>Dos caracter\u00edsticas de PHP que creo que a menudo se usan en exceso cuando se trata de &quot;depuraci\u00f3n&quot; son el uso <a href=\"https:\/\/php.net\/manual\/en\/function.echo.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de echo<\/a> y <a href=\"https:\/\/php.net\/manual\/en\/function.var-dump.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">var_dump<\/a>. He hablado de esto en algunos art\u00edculos diferentes sobre la depuraci\u00f3n (como <a href=\"https:\/\/wordpress.mediadoma.com\/es\/usando-xdebug-con-valet-y-wordpress\/\" title=\"aqu\u00ed\">aqu\u00ed<\/a> y <a href=\"https:\/\/tommcfarlin.com\/debugging-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aqu\u00ed<\/a> ).<\/p>\n<p>Y por mucho que sea un fan\u00e1tico de usar un depurador, creo que tambi\u00e9n es importante implementar un tipo de sistema de registro para que usted o su cliente puedan regresar y revisar la actividad que ha estado ocurriendo dentro del sistema como lo han hecho ellos o sus usuarios. estado, ya sabes, us\u00e1ndolo.<\/p>\n<p>Sin embargo, hay dos aspectos para hacer esto, especialmente si est\u00e1 buscando seguir la interfaz de registro de PSR y son:<\/p>\n<ol>\n<li>las reglas para la interfaz de registro real,<\/li>\n<li>un proyecto que implemente correctamente dicha interfaz de registro.<\/li>\n<\/ol>\n<p>Entonces, \u00bfpor qu\u00e9 no abordar ambos en esta publicaci\u00f3n?<\/p>\n<h2>La interfaz de registro de PSR<\/h2>\n<p>La <a href=\"http:\/\/www.php-fig.org\/psr\/psr-3\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">interfaz de registro de PSR<\/a> (o PSR-3) cubre una serie de cosas sobre las que puede leer con m\u00e1s detalle en la p\u00e1gina real.<\/p>\n<p>\u00c9stos incluyen:<\/p>\n<ol>\n<li>Los basicos<\/li>\n<li>Mensajes<\/li>\n<li>Contexto<\/li>\n<li>Clases de ayuda<\/li>\n<li>Paquetes<\/li>\n<li>Interfaces<\/li>\n<li>Niveles de registro<\/li>\n<li>Y m\u00e1s.<\/li>\n<\/ol>\n<p>Pero a los efectos de este art\u00edculo, quiero hablar espec\u00edficamente sobre la interfaz en s\u00ed, un proyecto que la implementa y por qu\u00e9 es importante.<\/p>\n<h3>La interfaz de registro<\/h3>\n<p>La p\u00e1gina de inicio de la documentaci\u00f3n dice:<\/p>\n<blockquote>\n<p>Este documento describe una interfaz com\u00fan para las bibliotecas de registro.<\/p>\n<p>El objetivo principal es permitir que las bibliotecas reciban un objeto PsrLogLoggerInterface y escriban registros en \u00e9l de una manera simple y universal.<\/p>\n<\/blockquote>\n<p>Desde el punto de vista del desarrollo, eso es bueno, \u00bfverdad? Quiero decir, proporciona una forma \u00fanica y consistente en la que podemos apostar por cualquier biblioteca de registro que optemos por usar en nuestros proyectos. Cubrir\u00e9 mi biblioteca preferida m\u00e1s adelante en el art\u00edculo.<\/p>\n<p>Para aquellos nuevos en la programaci\u00f3n orientada a objetos o simplemente curiosos sobre c\u00f3mo nos beneficia una interfaz consistente, pi\u00e9nselo de esta manera: independientemente del sistema que elija, est\u00e1 garantizado que tendr\u00e1 un cierto conjunto de funciones, estados, etc. puede utilizar en su aplicaci\u00f3n.<\/p>\n<p>En \u00faltima instancia, agregar un sistema de registro que tiene un est\u00e1ndar que debe seguir proporciona una variedad de beneficios independientemente de la biblioteca que elija (siempre que cumpla con PSR-3).<\/p>\n<h3>Prueba Mon\u00f3logo<\/h3>\n<p><a href=\"https:\/\/github.com\/Seldaek\/monolog\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Monolog<\/a> es m\u00e1s o menos la utilidad de registro de facto para aplicaciones 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=\"Interfaz de registro de PSR (y por qu\u00e9 es importante el registro)\"><\/a><\/p>\n<p>Es f\u00e1cil agregar el proyecto a trav\u00e9s de <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>, pero tambi\u00e9n incluye una variedad de formas diferentes de generar datos:<\/p>\n<blockquote>\n<p>Monolog env\u00eda sus registros a archivos, sockets, bandejas de entrada, bases de datos y varios servicios web. Consulte la lista completa de controladores a continuaci\u00f3n. Los controladores especiales le permiten crear estrategias de registro avanzadas.<\/p>\n<\/blockquote>\n<p>Personalmente, lo he usado solo en el contexto de enviar resultados a archivos; sin embargo, es bueno tener la capacidad de enviarlo a otros sistemas (especialmente bases de datos, como cuando se trabaja con WordPress). Por supuesto, no querr\u00e1s abusar de esa habilidad.<\/p>\n<p>En segundo lugar, es importante reconocer que aunque puede crear una instancia del registrador dentro de una funci\u00f3n u otra clase, existen otras formas m\u00e1s orientadas a objetos para hacerlo. PSR-3 cubre esto (como se mencion\u00f3 anteriormente).<\/p>\n<p>En resumen, desea asegurarse de que su clase acepte una instancia de una clase que implemente LoggerInterface. Monolog implementa dicha interfaz, as\u00ed que no hay problema.<\/p>\n<p>Adem\u00e1s, \u00bfqu\u00e9 sucede cuando tiene un grupo de clases relacionadas que necesitan implementar el registro?<\/p>\n<ul>\n<li>\u00bfEstas clases heredan de un padre com\u00fan?<\/li>\n<li>\u00bfEstas clases implementan un <a href=\"https:\/\/php.net\/manual\/en\/language.oop5.traits.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rasgo<\/a>? (Esta es una opci\u00f3n que un amigo me present\u00f3 recientemente).<\/li>\n<li>\u00bfCada clase simplemente acepta la dependencia a trav\u00e9s de la inyecci\u00f3n del constructor?<\/li>\n<\/ul>\n<p>Hay una variedad de formas en las que se pueden agregar registradores a una clase y depende de c\u00f3mo est\u00e9 organizado su proyecto.<\/p>\n<h2>M\u00e1s sobre el registro<\/h2>\n<p>En cualquier caso, introducir el inicio de sesi\u00f3n en una aplicaci\u00f3n es importante por una variedad de razones, como poder solucionar problemas cuando algo no se comporta como se esperaba tanto en el desarrollo, la etapa y especialmente en la producci\u00f3n.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <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 desea seguir la interfaz de registro de PSR, aseg\u00farese de revisar PSR-3 y consulte Monolog, que implementa dicha interfaz de registro.<\/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":[716,840],"tags":[1172],"class_list":["post-229321","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-tutoriales","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=229321"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/229321\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/166192"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=229321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=229321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=229321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}