Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

eventos usando monolog en symfony

20 de noviembre de 2016

Hola, mi propósito es que cuando un nuevo usuario se registra en mi aplicación se lance un evento que mediante monolog lo registre en un archivo de log.

Este es mi código:

Event:

use Symfony\Component\EventDispatcher\Event;
 
class LogEvent extends Event
{
    protected $mensaje;
 
    public function __construct($mensaje)
    {
        $this->mensaje = $mensaje;
    }
 
    public function getMensaje()
    {
        return $this->mensaje;
    }
 
}

Listener:

use Symfony\Component\EventDispatcher\Event;
 
class LogListener
{
    private logger;
 
    public function __construct(Logger $logger){
 
    $this->logger = $logger;
    $this->logger->pushHandler(new StreamHandler('logs/info.log', Logger::INFO));
 
    }
 
    public function onLogAction(LogEvent $event)
    {
        $logger->addInfo($event->getMensaje());
    }
}

services.yml (no tengo nada más, no sé si lo que me falla es que tengo que declarar el servicio logger de monolog para que funcione)

services:
 
    my_log_listener:
        class: UsersBundle\EventListener\LogListener
        arguments: ["@logger"]
        tags:
            - {name: kernel.event.listener, event: add.log, method: onLogAction}

Controlador:

$mensaje = "Nuevo usuario registrado: ".$session->get('username');
$this->get('event_dispatcher')->dispatch('add.log', new LogEvent($mensaje));

He creado el archivo /web/logs/info.log pero al registrar usuarios el archivo sigue vacío.

Un saludo