Nuevo en Symfony 3.3: Logs automáticos en la consola

El component Console de Symfony no genera ningún mensaje de log por defecto, ya que normalmente los comandos se ejecutan a mano y puedes ver el resultado tu mismo. Sin embargo, en ocasiones los comandos se ejecutan automáticamente (por ejemplo en una tarea programada o en un script de despliegue de aplicaciones) y entonces sí que necesitas tener logs cuando las cosas no funcionan bien.

Para conseguirlo, en Symfony 3.2 tenías que crear tu propio envet listener o subscriber para escuchar el evento console.exception y guardar en el log los detalles del error. En Symfony 3.3 hemos decidido activar automáticamente los logs para los comandos de la consola.

Por tanto, si se produce una excepción durante la ejecución de un comando, verás un mensaje como el siguiente en tu archivo de log:

[2017-02-15 09:34:42] app.ERROR: Exception thrown while running command:
"cache:clear -vvv". Message: "An error occured!" {"exception":"[object]
(RuntimeException(code: 0): An error occured! at vendor/symfony/symfony/
src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:61)",
"command":"cache:clear -vvv","message":"An error occured!"} []

Además de registrar las excepciones, el nuevo subscriber también escucha el evento console.terminate, por lo que verás logs para cualquier comando cuyo código de salida no sea 0, que es el valor correcto cuando tofo funciona bien.

Fuente: New in Symfony 3.3: Automatic Console logging

Comentarios

Publicada el

2 de febrero de 2017

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.