第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Symfony 中發(fā)生異?;蝈e誤時將日志發(fā)送到電子郵件?

如何在 Symfony 中發(fā)生異?;蝈e誤時將日志發(fā)送到電子郵件?

PHP
慕的地8271018 2023-04-21 16:27:43
我的要求:每當應用程序發(fā)生錯誤時,將該錯誤日志發(fā)送到電子郵件。我正在嘗試將我們應用程序中發(fā)生的任何異常/錯誤日志發(fā)送到電子郵件。這是我嘗試過的方法,但我沒有收到電子郵件中的日志。注意:電子郵件發(fā)送功能工作正常,因為我已經在測試控制器中對其進行了測試。但它不適用于此 Listener。當我點擊 TestController Index Route 時會發(fā)生什么?當我訪問index路由時,它拋出 500 個內部服務器錯誤(因為我們故意拋出異常)。但是,如果發(fā)生此異常,它應該將日志發(fā)送到電子郵件。因為在 ExceptionListener 中我已經編碼了日志的電子郵件發(fā)送。但它不發(fā)送日志(:異常監(jiān)聽器.php:<?phpnamespace 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中注冊了監(jiān)聽器:App\EventListener\ExceptionListener:        tags:            - { name: kernel.event_listener, event: kernel.exception }我故意生成異常的TestController :<?phpnamespace 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
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

Edit2:在構造函數中添加電子郵件服務并堅持 onKernelException 的標準定義

如果您使用的是 Monolog 和 SwiftMailer,這將在幾分鐘內完成。我認為一切都得到了很好的解釋,但如果您遇到困難,請告訴我們。

編輯:我實際上注意到你不使用 Monolog。我會推薦使用它,這樣你也有一個包含錯誤的日志文件。完成后,無論何時觸發(fā),$this->logger->error('My error');?都會發(fā)送一封包含錯誤和堆棧跟蹤的電子郵件。這在制作初期非常方便。


查看完整回答
反對 回復 2023-04-21
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

首先,您的偵聽器的服務定義缺少以下method屬性:


- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }

現在運行以下命令以列出事件的已注冊事件偵聽器/處理程序kernel.exception。


php app/console debug:event-dispatcher kernel.exception

如果您的偵聽器沒有出現,請檢查您的服務配置。


如果它確實出現但仍未被調用,請檢查priority您的偵聽器。它的優(yōu)先級可能低于框架提供的默認偵聽器,并且異常可能已由另一個停止事件進一步傳播的偵聽器處理。


如果是這種情況,請?zhí)岣遬riority您的偵聽器的(優(yōu)先級更高的優(yōu)先級)以使其更早調用。


services:

  App\EventListener\ExceptionListener:

    tags:

      - { name: kernel.event_listener, event: kernel.exception, method: onKernelException, priority: 1000 } 



查看完整回答
反對 回復 2023-04-21
  • 2 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號