serviceContainer = $serviceContainer; } /** * $msg will be an instance of `PhpAmqpLib\Message\AMQPMessage` * with the $msg->body being the data sent over RabbitMQ. * * @param AMQPMessage $msg */ public function execute(AMQPMessage $msg) { $message = ''; $level = ''; $channel = ''; try { $msgBody = json_decode($msg->body, true); if (!json_last_error() && isset($msgBody['message']) && !empty($msgBody['message'])) { $message = $msgBody['message']; $level = $msgBody['level_name']; $channel = $msgBody['channel']; } } catch (\Exception $ex) { $message = $ex->getMessage(); } $log = $this->createLog($message, $level, $channel); if (is_null($log)) { var_dump('Error: log no creado'); } else { var_dump(sprintf("ID: %s Message: %s", $log->getId(), $log->getMessage())); } return; } /** * Crea una entidad Log y la persiste * * @param string $message * * @return \WorkflowBundle\Services\LogBundle\Entity\Log */ private function createLog($message, $level, $channel) { $logClass = 'LogBundle\Entity\Log'; if ($message && class_exists($logClass)) { $log = new $logClass(); $log->setMessage($message); $log->setLevel($level); $log->setChannel($channel); $em = $this->serviceContainer->get('doctrine.orm.entity_manager'); $validator = $this->serviceContainer->get('validator'); if ($validator->validate($log)->count() == 0) { $em->persist($log); $em->flush($log); return $log; } } return null; } }