Add more logging for sending debugging [MAILPOET-2084]
This commit is contained in:
@ -49,6 +49,10 @@ class SendingQueue {
|
|||||||
if (!$queue instanceof SendingTask) continue;
|
if (!$queue instanceof SendingTask) continue;
|
||||||
ScheduledTaskModel::touchAllByIds(array($queue->task_id));
|
ScheduledTaskModel::touchAllByIds(array($queue->task_id));
|
||||||
|
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'sending queue processing',
|
||||||
|
['task_id' => $queue->task_id]
|
||||||
|
);
|
||||||
$newsletter = $this->newsletter_task->getNewsletterFromQueue($queue);
|
$newsletter = $this->newsletter_task->getNewsletterFromQueue($queue);
|
||||||
if (!$newsletter) {
|
if (!$newsletter) {
|
||||||
continue;
|
continue;
|
||||||
@ -72,6 +76,10 @@ class SendingQueue {
|
|||||||
// get subscribers
|
// get subscribers
|
||||||
$subscriber_batches = new BatchIterator($queue->task_id, $this->batch_size);
|
$subscriber_batches = new BatchIterator($queue->task_id, $this->batch_size);
|
||||||
foreach ($subscriber_batches as $subscribers_to_process_ids) {
|
foreach ($subscriber_batches as $subscribers_to_process_ids) {
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'subscriber batch processing',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'subscriber_batch_count' => count($subscribers_to_process_ids)]
|
||||||
|
);
|
||||||
if (!empty($newsletter_segments_ids[0])) {
|
if (!empty($newsletter_segments_ids[0])) {
|
||||||
// Check that subscribers are in segments
|
// Check that subscribers are in segments
|
||||||
$finder = new SubscribersFinder();
|
$finder = new SubscribersFinder();
|
||||||
@ -98,12 +106,24 @@ class SendingQueue {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'before queue chunk processing',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id, 'found_subscribers_count' => count($found_subscribers)]
|
||||||
|
);
|
||||||
$queue = $this->processQueue(
|
$queue = $this->processQueue(
|
||||||
$queue,
|
$queue,
|
||||||
$_newsletter,
|
$_newsletter,
|
||||||
$found_subscribers
|
$found_subscribers
|
||||||
);
|
);
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'after queue chunk processing',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
|
);
|
||||||
if ($queue->status === ScheduledTaskModel::STATUS_COMPLETED) {
|
if ($queue->status === ScheduledTaskModel::STATUS_COMPLETED) {
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'completed newsletter sending',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
|
);
|
||||||
$this->newsletter_task->markNewsletterAsSent($newsletter, $queue);
|
$this->newsletter_task->markNewsletterAsSent($newsletter, $queue);
|
||||||
$this->stats_notifications_scheduler->schedule($newsletter);
|
$this->stats_notifications_scheduler->schedule($newsletter);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
|||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as LinksTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links as LinksTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Posts as PostsTask;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Shortcodes as ShortcodesTask;
|
||||||
|
use MailPoet\Logging\Logger;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter as NewsletterModel;
|
use MailPoet\Models\Newsletter as NewsletterModel;
|
||||||
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
||||||
@ -75,6 +76,10 @@ class Newsletter {
|
|||||||
$this->stopNewsletterPreProcessing(sprintf('QUEUE-%d-RENDER', $queue->id)) :
|
$this->stopNewsletterPreProcessing(sprintf('QUEUE-%d-RENDER', $queue->id)) :
|
||||||
$newsletter;
|
$newsletter;
|
||||||
}
|
}
|
||||||
|
Logger::getLogger('newsletters')->addInfo(
|
||||||
|
'pre-processing newsletter',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
|
);
|
||||||
// if tracking is enabled, do additional processing
|
// if tracking is enabled, do additional processing
|
||||||
if ($this->tracking_enabled) {
|
if ($this->tracking_enabled) {
|
||||||
// hook to the newsletter post-processing filter and add tracking image
|
// hook to the newsletter post-processing filter and add tracking image
|
||||||
@ -102,6 +107,10 @@ class Newsletter {
|
|||||||
$this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
|
$this->posts_task->getAlcPostsCount($rendered_newsletter, $newsletter) === 0
|
||||||
) {
|
) {
|
||||||
// delete notification history record since it will never be sent
|
// delete notification history record since it will never be sent
|
||||||
|
Logger::getLogger('post-notifications')->addInfo(
|
||||||
|
'no posts in post notification, deleting it',
|
||||||
|
['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id]
|
||||||
|
);
|
||||||
$newsletter->delete();
|
$newsletter->delete();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
||||||
|
|
||||||
|
use MailPoet\Logging\Logger;
|
||||||
use MailPoet\Models\Newsletter as NewsletterModel;
|
use MailPoet\Models\Newsletter as NewsletterModel;
|
||||||
use MailPoet\Models\NewsletterPost;
|
use MailPoet\Models\NewsletterPost;
|
||||||
|
|
||||||
@ -11,6 +12,10 @@ class Posts {
|
|||||||
if ($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
if ($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Logger::getLogger('post-notifications')->addInfo(
|
||||||
|
'extract and save posts - before',
|
||||||
|
['newsletter_id' => $newsletter->id]
|
||||||
|
);
|
||||||
preg_match_all(
|
preg_match_all(
|
||||||
'/data-post-id="(\d+)"/ism',
|
'/data-post-id="(\d+)"/ism',
|
||||||
$rendered_newsletter['html'],
|
$rendered_newsletter['html'],
|
||||||
@ -26,6 +31,10 @@ class Posts {
|
|||||||
$newsletter_post->post_id = $post_id;
|
$newsletter_post->post_id = $post_id;
|
||||||
$newsletter_post->save();
|
$newsletter_post->save();
|
||||||
}
|
}
|
||||||
|
Logger::getLogger('post-notifications')->addInfo(
|
||||||
|
'extract and save posts - after',
|
||||||
|
['newsletter_id' => $newsletter->id, 'matched_posts_ids' => $matched_posts_ids]
|
||||||
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Services\Bridge;
|
namespace MailPoet\Services\Bridge;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
use MailPoet\Logging\Logger;
|
||||||
|
|
||||||
class API {
|
class API {
|
||||||
const SENDING_STATUS_OK = 'ok';
|
const SENDING_STATUS_OK = 'ok';
|
||||||
@ -76,12 +77,20 @@ class API {
|
|||||||
return array('code' => $code, 'data' => $body);
|
return array('code' => $code, 'data' => $body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function logCurlInformation($headers, $info) {
|
||||||
|
Logger::getLogger('mss')->addInfo(
|
||||||
|
'requests-curl.after_request',
|
||||||
|
['headers' => $headers, 'curl_info' => $info]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function sendMessages($message_body) {
|
function sendMessages($message_body) {
|
||||||
|
add_action('requests-curl.after_request', [$this, 'logCurlInformation'], 10, 2);
|
||||||
$result = $this->request(
|
$result = $this->request(
|
||||||
$this->url_messages,
|
$this->url_messages,
|
||||||
$message_body
|
$message_body
|
||||||
);
|
);
|
||||||
|
remove_action('requests-curl.after_request', [$this, 'logCurlInformation']);
|
||||||
if (is_wp_error($result)) {
|
if (is_wp_error($result)) {
|
||||||
return array(
|
return array(
|
||||||
'status' => self::SENDING_STATUS_CONNECTION_ERROR,
|
'status' => self::SENDING_STATUS_CONNECTION_ERROR,
|
||||||
|
@ -208,7 +208,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
array(
|
array(
|
||||||
'processQueue' => function() {
|
'processQueue' => function() {
|
||||||
// this function returns a queue object
|
// this function returns a queue object
|
||||||
return (object)array('status' => null);
|
return (object)array('status' => null, 'task_id' => 0);
|
||||||
},
|
},
|
||||||
'enforceSendingAndExecutionLimits' => Expected::exactly(2)
|
'enforceSendingAndExecutionLimits' => Expected::exactly(2)
|
||||||
), $this);
|
), $this);
|
||||||
|
@ -378,6 +378,7 @@ class NewsletterTest extends \MailPoetTest {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
$queue_mock->id = $queue->id;
|
$queue_mock->id = $queue->id;
|
||||||
|
$queue_mock->task_id = $queue->task_id;
|
||||||
|
|
||||||
// properly serialized object
|
// properly serialized object
|
||||||
$queue->newsletter_rendered_body = 'a:2:{s:4:"html";s:4:"test";s:4:"text";s:4:"test";}';
|
$queue->newsletter_rendered_body = 'a:2:{s:4:"html";s:4:"test";s:4:"text";s:4:"test";}';
|
||||||
|
Reference in New Issue
Block a user