Los archivos de registro de Symfony tienen el mismo formato para todos los entornos. Esto significa que dev.log
está optimizado para máquinas en lugar de humanos. El resultado es un archivo de registro repleto de información inútil que lo hace menos productivo.
EasyLogHandler es un nuevo controlador Monolog que crea archivos de registro amigables para los humanos. Está optimizado para mostrar la información del registro de forma clara y concisa. Úselo en el entorno de desarrollo para convertirse en un desarrollador mucho más productivo.
Características
Instalación
Configuración y uso
Estas son algunas de las mejores características de EasyLogHandler y cómo se compara con los registros predeterminados de Symfony.
Los archivos de registro de Symfony son un enorme flujo de texto. Cuando los abre, no puede saber fácilmente cuándo comenzó o finalizó una solicitud y qué mensajes de registro van juntos:
Symfony | EasyLogHandler |
---|---|
EasyLogHandler estructura los archivos de registro de otra manera:
Agrega un encabezado grande y algunas líneas nuevas para separar los registros de cada solicitud;
Si la solicitud es menos significativa (por ejemplo, solicitudes Assetic), el encabezado es más compacto y muestra menos información;
Los mensajes de registro están divididos internamente para que puedas entender mejor sus diferentes partes (solicitud, doctrina, seguridad, etc.)
En primer lugar, EasyLogHandler no muestra la marca de tiempo en cada mensaje de registro. En el entorno dev
, eso no debería importarle, por lo que la marca de tiempo solo se muestra una vez para cada grupo de mensajes de registro.
Symfony | EasyLogHandler |
---|---|
La información extra
, que algunos mensajes de registro incluyen para agregar más detalles sobre el registro, se muestra solo cuando es diferente del registro anterior. Por el contrario, Symfony siempre muestra el extra
para todos los registros, generando mucha información duplicada:
Symfony |
---|
EasyLogHandler |
---|
Se está volviendo cada vez más popular usar marcadores de posición en los mensajes de registro en lugar de los valores reales (p. ej. Matched route "{route}".
en lugar de Matched route "home".
). Esto es excelente para las máquinas, porque pueden agrupar mensajes similares que solo varían en los valores del marcador de posición.
Sin embargo, para los humanos esta "característica" resulta inquietante. Es por eso que EasyLogHandler reemplaza automáticamente cualquier marcador de posición incluido en el mensaje de registro:
Symfony |
---|
EasyLogHandler |
---|
Los elementos importantes, como las desaprobaciones y los mensajes relacionados con la seguridad, deben destacarse en los archivos de registro para ayudarle a detectarlos al instante. Sin embargo, en Symfony todos los registros tienen el mismo aspecto. ¿Cómo saber cuáles son los importantes?
Symfony |
---|
(todos los mensajes se ven exactamente iguales) |
EasyLogHandler |
---|
(se destacan las obsolescencias, advertencias, errores y mensajes de seguridad) |
Los mensajes de registro suelen contener variables relacionadas en su context
y propiedades extra
. Mostrar el contenido de estas variables en los archivos de registro siempre supone un difícil equilibrio entre legibilidad y concisión.
EasyLogHandler decide cómo alinear estas variables dinámicamente según cada mensaje de registro. Por ejemplo, los parámetros de consulta de Doctrine siempre están integrados, pero los parámetros de solicitud están integrados para solicitudes sin importancia y anidados para solicitudes importantes:
Cuando los mensajes de registro incluyen seguimientos de la pila de errores, definitivamente querrás echarles un vistazo. Sin embargo, Symfony muestra seguimientos de pila integrados, lo que los hace imposibles de inspeccionar. EasyLogHandler los muestra como seguimientos de pila adecuados:
Symfony |
---|
EasyLogHandler |
---|
Una de las experiencias más frustrantes al inspeccionar archivos de registro es recibir muchos mensajes consecutivos repetidos o similares. Proporcionan poca información y sólo te distraen. EasyLogHandler procesa todos los mensajes de registro a la vez en lugar de uno por uno, por lo que sabe cuándo hay registros consecutivos similares.
Por ejemplo, este es un archivo de registro de Symfony que muestra tres mensajes de traducción faltantes consecutivos:
Y así es como EasyLogHandler muestra los mismos mensajes:
La diferencia es aún más evidente en el caso de los mensajes de "notificación de evento", que suelen generar decenas de mensajes consecutivos:
Symfony |
---|
EasyLogHandler |
---|
Este proyecto se distribuye como un paquete PHP en lugar de un paquete Symfony, por lo que solo necesitas solicitar el proyecto con Composer:
$ compositor requiere --dev easycorp/easy-log-handler
Defina un nuevo servicio en su aplicación para este controlador de registros:
Versión más reciente de Symfony:
# config/packages/dev/easy_log_handler.yamlservices:EasyCorpEasyLogEasyLogHandler:public: falsearguments: ['%kernel.logs_dir%/%kernel.environment%.log']
Versión anterior de Symfony:
# app/config/services.ymlservices:# ...easycorp.easylog.handler:clase: EasyCorpEasyLogEasyLogHandlerpublic: falsearguments: - '%kernel.logs_dir%/%kernel.environment%.log'
Actualice su configuración de Monolog en el entorno dev
para definir un controlador almacenado en búfer que incluya este nuevo servicio de controlador (siga leyendo para comprender por qué). Puede copiar y pegar de forma segura esta configuración:
Versión más reciente de Symfony:
# config/packages/dev/monolog.yamlmonolog:handlers:buffered:type: bufferhandler: easylogchannels: ['!event']level: debugeasylog:type: serviceid: EasyCorpEasyLogEasyLogHandler
Versión anterior de Symfony:
# app/config/config_dev.ymlmonolog:handlers:buffered:tipo: bufferhandler: easylogchannels: ["!event"]nivel: debugeasylog:tipo: serviceid: easycorp.easylog.handler
La mayoría de los controladores de registros tratan cada mensaje de registro por separado. Por el contrario, el procesamiento de registros avanzado de EasyLogHandler requiere que cada mensaje de registro conozca los demás registros (por ejemplo, para fusionar mensajes consecutivos similares). Esto significa que todos los registros asociados con la solicitud deben capturarse y procesarse por lotes.
En la configuración anterior, el controlador buffered
guarda todos los mensajes de registro y luego los pasa al controlador EasyLog, que procesa todos los mensajes a la vez y escribe el resultado en el archivo de registro.
Utilice el controlador buffered
para configurar los canales registrados/excluidos y el nivel de los mensajes que se registran.