Interfaz de registro de PSR (y por qué es importante el registro)
Dos características de PHP que creo que a menudo se usan en exceso cuando se trata de "depuración" son el uso de echo y var_dump. He hablado de esto en algunos artículos diferentes sobre la depuración (como aquí y aquí ).
Y por mucho que sea un fanático de usar un depurador, creo que también 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ándolo.
Sin embargo, hay dos aspectos para hacer esto, especialmente si está buscando seguir la interfaz de registro de PSR y son:
- las reglas para la interfaz de registro real,
- un proyecto que implemente correctamente dicha interfaz de registro.
Entonces, ¿por qué no abordar ambos en esta publicación?
La interfaz de registro de PSR
La interfaz de registro de PSR (o PSR-3) cubre una serie de cosas sobre las que puede leer con más detalle en la página real.
Éstos incluyen:
- Los basicos
- Mensajes
- Contexto
- Clases de ayuda
- Paquetes
- Interfaces
- Niveles de registro
- Y más.
Pero a los efectos de este artículo, quiero hablar específicamente sobre la interfaz en sí, un proyecto que la implementa y por qué es importante.
La interfaz de registro
La página de inicio de la documentación dice:
Este documento describe una interfaz común para las bibliotecas de registro.
El objetivo principal es permitir que las bibliotecas reciban un objeto PsrLogLoggerInterface y escriban registros en él de una manera simple y universal.
Desde el punto de vista del desarrollo, eso es bueno, ¿verdad? Quiero decir, proporciona una forma única y consistente en la que podemos apostar por cualquier biblioteca de registro que optemos por usar en nuestros proyectos. Cubriré mi biblioteca preferida más adelante en el artículo.
Para aquellos nuevos en la programación orientada a objetos o simplemente curiosos sobre cómo nos beneficia una interfaz consistente, piénselo de esta manera: independientemente del sistema que elija, está garantizado que tendrá un cierto conjunto de funciones, estados, etc. puede utilizar en su aplicación.
En última instancia, agregar un sistema de registro que tiene un estándar que debe seguir proporciona una variedad de beneficios independientemente de la biblioteca que elija (siempre que cumpla con PSR-3).
Prueba Monólogo
Monolog es más o menos la utilidad de registro de facto para aplicaciones PHP.
Es fácil agregar el proyecto a través de Composer, pero también incluye una variedad de formas diferentes de generar datos:
Monolog envía sus registros a archivos, sockets, bandejas de entrada, bases de datos y varios servicios web. Consulte la lista completa de controladores a continuación. Los controladores especiales le permiten crear estrategias de registro avanzadas.
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ás abusar de esa habilidad.
En segundo lugar, es importante reconocer que aunque puede crear una instancia del registrador dentro de una función u otra clase, existen otras formas más orientadas a objetos para hacerlo. PSR-3 cubre esto (como se mencionó anteriormente).
En resumen, desea asegurarse de que su clase acepte una instancia de una clase que implemente LoggerInterface. Monolog implementa dicha interfaz, así que no hay problema.
Además, ¿qué sucede cuando tiene un grupo de clases relacionadas que necesitan implementar el registro?
- ¿Estas clases heredan de un padre común?
- ¿Estas clases implementan un rasgo? (Esta es una opción que un amigo me presentó recientemente).
- ¿Cada clase simplemente acepta la dependencia a través de la inyección del constructor?
Hay una variedad de formas en las que se pueden agregar registradores a una clase y depende de cómo esté organizado su proyecto.
Más sobre el registro
En cualquier caso, introducir el inicio de sesión en una aplicación 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ón.
