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