Мои требования : всякий раз, когда в приложении возникает ошибка, отправляйте эти журналы ошибок на электронную почту.
Я пытаюсь отправить любые журналы исключений / ошибок на электронную почту, которая возникает в нашем приложении. Вот что я пробовал, но я не получаю журналы по электронной почте.
Примечание : функция отправки электронной почты работает нормально, потому что я тестировал ее в тестовом контроллере. Но это не работает с этим слушателем.
Что происходит, когда я нажимаю TestController Index Route?
Когда я просматриваю index
маршрут, он выдает внутреннюю ошибку сервера 500 (потому что мы намеренно сгенерировали исключение). Однако, если возникает это исключение, он должен отправить журналы по электронной почте. Потому что в ExceptionListener я закодировал отправку журналов по электронной почте. Но он не отправляет журналы (:
ExceptionListener. php:
<?php
namespace App\EventListener;
use App\Service\EmailService;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
class ExceptionListener
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function onKernelException(EmailService $emailService, ExceptionEvent $event)
{
// You get the exception object from the received event
$exception = $event->getThrowable();
$message = sprintf(
'My Error says: %s with code: %s',
$exception->getMessage(),
$exception->getCode()
);
try {
$emailService->sendLogToMail("myemail@gmail.com", $message);
} catch (TransportExceptionInterface $e) {
//
}
}
}
Я зарегистрировал слушателя в services.yaml :
App\EventListener\ExceptionListener:
tags:
- { name: kernel.event_listener, event: kernel.exception }
TestController где я намеренно генерирую исключение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Exception;
class TestController extends AbstractController
{
public function index() {
throw new Exception("It's bad");
}
}
Я использую Symfony v4.4