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:
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:
Creamos el controlador que generará el luckynumber y lo logeará en el fichero de logs:
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:
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:
[2019-08-02 17:26:48] debugLogger.NOTICE: debugLogger is now ready [] []
[2019-08-02 17:26:48] debugLogger.NOTICE: luckyNumber: 66 [] []