monitoring-8.x-1.x-dev/src/Plugin/monitoring/SensorPlugin/UltimateCronErrorsSensorPlugin.php

src/Plugin/monitoring/SensorPlugin/UltimateCronErrorsSensorPlugin.php
<?php

namespace Drupal\monitoring\Plugin\monitoring\SensorPlugin;

use Drupal\Core\Link;
use Drupal\Core\Logger\RfcLogLevel;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\monitoring\Attribute\SensorPlugin;
use Drupal\monitoring\Result\SensorResultInterface;
use Drupal\monitoring\SensorPlugin\ExtendedInfoSensorPluginInterface;
use Drupal\monitoring\SensorPlugin\SensorPluginBase;
use Drupal\ultimate_cron\Entity\CronJob;

/**
 * Monitors the ultimate cron errors.
 */
#[SensorPlugin(
  id: 'ultimate_cron_errors',
  label: new TranslatableMarkup('Ultimate cron errors'),
  provider: 'ultimate_cron',
  addable: FALSE,
  metric_type: 'gauge',
)]
class UltimateCronErrorsSensorPlugin extends SensorPluginBase implements ExtendedInfoSensorPluginInterface {

  /**
   * The error log entries.
   *
   * @var array
   */
  protected $logEntries;

  /**
   * {@inheritdoc}
   */
  public function runSensor(SensorResultInterface $result) {
    $this->logEntries = $this->getErrorLogEntries();
    $result->setValue(count($this->logEntries));
  }

  /**
   * {@inheritdoc}
   */
  public function resultVerbose(SensorResultInterface $result) {
    $rows = [];
    foreach ($this->logEntries as $log_entry) {
      $rows[] = [
        'name' => $log_entry->job->label() . ' (' . $log_entry->job->getModuleName() . ')',
        'message' => strip_tags($log_entry->message),
        'logs' => Link::createFromRoute($this->t('View logs'), 'entity.ultimate_cron_job.logs', ['ultimate_cron_job' => $log_entry->name]),
      ];
    }
    $header = [
      'name' => $this->t('Cron job'),
      'message' => $this->t('Message'),
      'logs' => $this->t('Logs'),
    ];
    $output['log_entries'] = [
      '#type' => 'verbose_table_result',
      '#title' => $this->t('Log entries'),
      '#header' => $header,
      '#rows' => $rows,
    ];
    return $output;
  }

  /**
   * Returns error log entries.
   *
   * @return array
   *   An array of log entries.
   */
  public function getErrorLogEntries() {
    // Loads active cron jobs.
    $job_ids = \Drupal::entityQuery('ultimate_cron_job')
      ->condition('status', TRUE)
      ->execute();
    $jobs = CronJob::loadMultiple($job_ids);

    $log_entries = [];
    /** @var \Drupal\ultimate_cron\Entity\CronJob $job */
    foreach ($jobs as $job) {
      $job_entries = $job->getLogEntries(ULTIMATE_CRON_LOG_TYPE_ALL, 10);
      foreach ($job_entries as $job_entry) {
        if ($job_entry->severity == RfcLogLevel::ERROR) {
          $job_entry->job = $job;
          $log_entries[] = $job_entry;
        }
      }
    }

    return $log_entries;
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc