From e4db455a47e5cbd293c3f2865d028f19c606b46a Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Mon, 1 Oct 2018 14:39:49 +0200 Subject: [PATCH] Add post notification logging [MAILPOET-1536] --- lib/Cron/Workers/Scheduler.php | 17 ++++++++++++ .../Workers/SendingQueue/SendingQueue.php | 5 ++++ lib/Newsletter/AutomatedLatestContent.php | 26 +++++++++++++++++++ lib/Newsletter/Scheduler/Scheduler.php | 9 +++++++ 4 files changed, 57 insertions(+) diff --git a/lib/Cron/Workers/Scheduler.php b/lib/Cron/Workers/Scheduler.php index 82ede9afc1..826cf58b27 100644 --- a/lib/Cron/Workers/Scheduler.php +++ b/lib/Cron/Workers/Scheduler.php @@ -4,6 +4,7 @@ namespace MailPoet\Cron\Workers; use Carbon\Carbon; use MailPoet\Cron\CronHelper; +use MailPoet\Logging\Logger; use MailPoet\Models\Newsletter; use MailPoet\Models\ScheduledTask; use MailPoet\Models\Segment; @@ -75,9 +76,17 @@ class Scheduler { } function processPostNotificationNewsletter($newsletter, $queue) { + Logger::getLogger('post-notifications')->addInfo( + 'process post notification in scheduler', + ['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id] + ); // ensure that segments exist $segments = $newsletter->segments()->findArray(); if(empty($segments)) { + Logger::getLogger('post-notifications')->addInfo( + 'post notification no segments', + ['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id] + ); return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter); } @@ -87,6 +96,10 @@ class Scheduler { $subscribers_count = $finder->addSubscribersToTaskFromSegments($queue->task(), $segments); if(empty($subscribers_count)) { + Logger::getLogger('post-notifications')->addInfo( + 'post notification no subscribers', + ['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id] + ); return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter); } @@ -100,6 +113,10 @@ class Scheduler { $queue->save(); // update notification status $notification_history->setStatus(Newsletter::STATUS_SENDING); + Logger::getLogger('post-notifications')->addInfo( + 'post notification set status to sending', + ['newsletter_id' => $newsletter->id, 'task_id' => $queue->task_id] + ); return true; } diff --git a/lib/Cron/Workers/SendingQueue/SendingQueue.php b/lib/Cron/Workers/SendingQueue/SendingQueue.php index a44275ad5d..e27208c6f5 100644 --- a/lib/Cron/Workers/SendingQueue/SendingQueue.php +++ b/lib/Cron/Workers/SendingQueue/SendingQueue.php @@ -5,6 +5,7 @@ use MailPoet\Cron\CronHelper; use MailPoet\Cron\Workers\SendingQueue\Tasks\Links; use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask; use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask; +use MailPoet\Logging\Logger; use MailPoet\Mailer\MailerError; use MailPoet\Mailer\MailerLog; use MailPoet\Models\ScheduledTask as ScheduledTaskModel; @@ -48,6 +49,10 @@ class SendingQueue { // pre-process newsletter (render, replace shortcodes/links, etc.) $newsletter = $this->newsletter_task->preProcessNewsletter($newsletter, $queue); if(!$newsletter) { + Logger::getLogger('newsletters')->addInfo( + 'delete task in sending queue', + ['newsletter_id' => $newsletter->id(), 'task_id' => $queue->task_id] + ); $queue->delete(); continue; } diff --git a/lib/Newsletter/AutomatedLatestContent.php b/lib/Newsletter/AutomatedLatestContent.php index 0e5d698ed2..421569be22 100644 --- a/lib/Newsletter/AutomatedLatestContent.php +++ b/lib/Newsletter/AutomatedLatestContent.php @@ -1,6 +1,7 @@ addInfo( + 'loading automated latest content', + ['args' => $args, 'posts_to_exclude' => $posts_to_exclude, 'newsletter_id' => $this->newsletter_id, 'newer_than_timestamp' => $this->newer_than_timestamp] + ); $posts_per_page = (!empty($args['amount']) && (int)$args['amount'] > 0) ? (int)$args['amount'] : self::DEFAULT_POSTS_PER_PAGE; @@ -70,7 +75,14 @@ class AutomatedLatestContent { } $this->_attachSentPostsFilter(); + + Logger::getLogger('post-notifications')->addInfo( + 'getting automated latest content', + ['parameters' => $parameters] + ); $posts = get_posts($parameters); + $this->logPosts($posts); + $this->_detachSentPostsFilter(); return $posts; } @@ -126,4 +138,18 @@ class AutomatedLatestContent { remove_action('posts_where', array($this, 'filterOutSentPosts')); } } + + private function logPosts(array $posts) { + $posts_to_log = []; + foreach($posts as $post) { + $posts_to_log[] = [ + 'id' => $post->ID, + 'post_date' => $post->post_date, + ]; + } + Logger::getLogger('post-notifications')->addInfo( + 'automated latest content loaded posts', + ['posts' => $posts_to_log] + ); + } } diff --git a/lib/Newsletter/Scheduler/Scheduler.php b/lib/Newsletter/Scheduler/Scheduler.php index ce68bc50ec..59d5131cdd 100644 --- a/lib/Newsletter/Scheduler/Scheduler.php +++ b/lib/Newsletter/Scheduler/Scheduler.php @@ -3,6 +3,7 @@ namespace MailPoet\Newsletter\Scheduler; use Carbon\Carbon; +use MailPoet\Logging\Logger; use MailPoet\Models\Newsletter; use MailPoet\Models\NewsletterOption; use MailPoet\Models\NewsletterOptionField; @@ -23,6 +24,10 @@ class Scheduler { const INTERVAL_NTHWEEKDAY = 'nthWeekDay'; static function schedulePostNotification($post_id) { + Logger::getLogger('post-notifications')->addInfo( + 'schedule post notification hook', + ['post_id' => $post_id] + ); $newsletters = self::getNewsletters(Newsletter::TYPE_NOTIFICATION); if(!count($newsletters)) return false; foreach($newsletters as $newsletter) { @@ -143,6 +148,10 @@ class Scheduler { $sending_task->status = SendingQueue::STATUS_SCHEDULED; $sending_task->scheduled_at = $next_run_date; $sending_task->save(); + Logger::getLogger('post-notifications')->addInfo( + 'schedule post notification', + ['sending_task' => $sending_task->id(), 'scheduled_at' => $next_run_date] + ); return $sending_task; }