Esta pagina se ve mejor con JavaScript habilitado

Monolog en symfony3.4

 ·  🎃 kr0m

Cuando una aplicación web falla es indispensable poder logear ciertas variables para ser capaces de debugear el código, en este artículo explicaré como hacerlo con symfony3.4 y monolog una librería de logging muy extendida entre programadores PHP.

Si no tenemos symfony y composer instalados procedemos a ello:

curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
chmod a+x /usr/local/bin/symfony
curl -sS https://getcomposer.org/installer -o composer-setup.php
php composer-setup.php –install-dir=/usr/local/bin –filename=composer

Vamos a seguir el ejemplo báscio luckyNumber de la web de symfony .

Creamos el proyecto:

symfony new luckyNumber 3.4

Creamos el controlador que generará el luckynumber y lo logeará en el fichero de logs:

cd luckyNumber
vi src/AppBundle/Controller/LuckyController.php

<?php
// src/AppBundle/Controller/LuckyController.php
namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

class LuckyController extends Controller
{
    /**
     * @Route("/lucky/number")
     */
    public function numberAction()
    {
    
        $logger = new Logger('debugLogger');
        $logDir = $this->container->get('kernel')->getLogDir();
        $logger->pushHandler(new StreamHandler($logDir.'/debugLog.log', Logger::NOTICE));
        $logger->notice('debugLogger is now ready');

        $number = random_int(0, 100);
        $logger->notice(sprintf('luckyNumber: %s', $number));

        return new Response(
            '<html><body>Lucky number: '.$number.'</body></html>'
        );
    }
}

Arrancamos el servidor web integrado en symfony:

php bin/console server:run

Comprobamos que el controlador funciona correctamente generando el lucky number:
http://localhost:8000/lucky/number

Podremos ver como logeamos el lucky number en nuestro fichero de log:

tail -f var/logs/debugLog.log

[2019-08-02 17:26:48] debugLogger.NOTICE: debugLogger is now ready [] []
[2019-08-02 17:26:48] debugLogger.NOTICE: luckyNumber: 66 [] []
Si te ha gustado el artículo puedes invitarme a un RedBull aquí