From 0bbdf4b47fe8a4380ff3723ada4eddbe4f70e822 Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Mon, 9 Jan 2023 15:31:18 +0100 Subject: [PATCH] Add error log when pausing sending due an error [MAILPOET-4940] --- mailpoet/lib/Mailer/MailerLog.php | 15 +++++++++++++++ .../tests/integration/Mailer/MailerLogTest.php | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/mailpoet/lib/Mailer/MailerLog.php b/mailpoet/lib/Mailer/MailerLog.php index 9984fbb10b..69d200c2ca 100644 --- a/mailpoet/lib/Mailer/MailerLog.php +++ b/mailpoet/lib/Mailer/MailerLog.php @@ -2,6 +2,7 @@ namespace MailPoet\Mailer; +use MailPoet\Logging\LoggerFactory; use MailPoet\Settings\SettingsController; /** @@ -173,6 +174,13 @@ class MailerLog { $mailerLog = self::setError($mailerLog, $operation, $errorMessage, $errorCode); self::updateMailerLog($mailerLog); if ($pauseSending) { + LoggerFactory::getInstance()->getLogger(LoggerFactory::TOPIC_SENDING)->error( + 'Email sending was paused due an error', + [ + 'error_message' => $errorMessage, + 'error_code' => $errorCode, + ] + ); self::pauseSending($mailerLog); } self::enforceExecutionRequirements(); @@ -202,6 +210,13 @@ class MailerLog { $mailerLog['transactional_email_error_count'] = ($mailerLog['transactional_email_error_count'] ?? 0) + 1; self::updateMailerLog($mailerLog); if ($mailerLog['transactional_email_error_count'] >= self::RETRY_ATTEMPTS_LIMIT) { + LoggerFactory::getInstance()->getLogger(LoggerFactory::TOPIC_SENDING)->error( + 'Email sending was paused due a transactional email error', + [ + 'error_message' => $errorMessage, + 'error_code' => $errorCode, + ] + ); self::pauseSending($mailerLog); } } diff --git a/mailpoet/tests/integration/Mailer/MailerLogTest.php b/mailpoet/tests/integration/Mailer/MailerLogTest.php index ad96aebcfe..c7b877b44c 100644 --- a/mailpoet/tests/integration/Mailer/MailerLogTest.php +++ b/mailpoet/tests/integration/Mailer/MailerLogTest.php @@ -2,6 +2,7 @@ namespace MailPoet\Test\Mailer; +use MailPoet\Entities\LogEntity; use MailPoet\Mailer\Mailer; use MailPoet\Mailer\MailerError; use MailPoet\Mailer\MailerLog; @@ -265,6 +266,9 @@ class MailerLogTest extends \MailPoetTest { 'error_message' => $error, ] ); + $logs = $this->entityManager->getRepository(LogEntity::class)->findAll(); + $this->assertInstanceOf(LogEntity::class, $logs[0]); + expect($logs[0]->getMessage())->stringContainsString('Email sending was paused due an error'); } public function testItProcessesTransactionalEmailSendingError() { @@ -318,6 +322,9 @@ class MailerLogTest extends \MailPoetTest { expect($mailerLog['transactional_email_last_error_at'])->null(); expect($mailerLog['transactional_email_error_count'])->null(); expect(MailerLog::isSendingPaused())->true(); + $logs = $this->entityManager->getRepository(LogEntity::class)->findAll(); + $this->assertInstanceOf(LogEntity::class, $logs[0]); + expect($logs[0]->getMessage())->stringContainsString('Email sending was paused due a transactional email error'); } public function testItEnforcesSendingLimit() { @@ -448,5 +455,6 @@ class MailerLogTest extends \MailPoetTest { public function _after() { $this->diContainer->get(SettingsRepository::class)->truncate(); + $this->truncateEntity(LogEntity::class); } }