You are here

class SolariumRequestLogger in Search API Solr 8.2

Same name and namespace in other branches
  1. 8.3 modules/search_api_solr_devel/src/Logging/SolariumRequestLogger.php \Drupal\search_api_solr_devel\Logging\SolariumRequestLogger
  2. 4.x modules/search_api_solr_devel/src/Logging/SolariumRequestLogger.php \Drupal\search_api_solr_devel\Logging\SolariumRequestLogger

Event subscriber to handle Solarium events.

Hierarchy

Expanded class hierarchy of SolariumRequestLogger

1 string reference to 'SolariumRequestLogger'
search_api_solr_devel.services.yml in search_api_solr_devel/search_api_solr_devel.services.yml
search_api_solr_devel/search_api_solr_devel.services.yml
1 service uses SolariumRequestLogger
search_api_solr_devel.solarium_request_logger in search_api_solr_devel/search_api_solr_devel.services.yml
Drupal\search_api_solr_devel\Logging\SolariumRequestLogger

File

search_api_solr_devel/src/Logging/SolariumRequestLogger.php, line 16

Namespace

Drupal\search_api_solr_devel\Logging
View source
class SolariumRequestLogger implements EventSubscriberInterface {
  use StringTranslationTrait;
  use LoggerTrait;

  /**
   * The Devel dumper manager.
   *
   * @var \Drupal\devel\DevelDumperManagerInterface
   */
  protected $develDumperManager;

  /**
   * Constructs a ModuleRouteSubscriber object.
   *
   * @param \Drupal\devel\DevelDumperManagerInterface $develDumperManager
   *   The dump manager.
   */
  public function __construct(DevelDumperManagerInterface $develDumperManager) {
    $this->develDumperManager = $develDumperManager;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      Events::PRE_EXECUTE_REQUEST => 'preExecuteRequest',
      Events::POST_EXECUTE_REQUEST => 'postExecuteRequest',
    ];
  }

  /**
   * Dumps a Solr query as drupal messages.
   *
   * @param \Solarium\Core\Event\PreExecuteRequest $event
   *   The pre execute event.
   */
  public function preExecuteRequest(PreExecuteRequest $event) {
    $request = $event
      ->getRequest();
    $method = $request
      ->getMethod();
    $this->develDumperManager
      ->message($request
      ->getUri(), $this
      ->t('Try to send Solr request'));
    $dump = [];
    $parameters = $method == 'GET' ? explode('&', $request
      ->getQueryString()) : explode('&', $request
      ->getRawData());
    foreach ($parameters as $parameter) {
      if ($parameter) {
        if (strpos($parameter, '=')) {
          list($name, $value) = explode('=', $parameter);
          $dump[urldecode($name)][] = urldecode($value);
        }
        else {
          $dump[urldecode($parameter)][] = '';
        }
      }
    }
    $this->develDumperManager
      ->message($dump, $method);
  }

  /**
   * Dumps a Solr response status as drupal messages and logs the response body.
   *
   * @param \Solarium\Core\Event\PostExecuteRequest $event
   *   The pre execute event.
   */
  public function postExecuteRequest(PostExecuteRequest $event) {
    $response = $event
      ->getResponse();
    $this->develDumperManager
      ->message($response
      ->getStatusCode() . ' ' . $response
      ->getStatusMessage(), $this
      ->t('Received Solr response'));
    $this
      ->getLogger()
      ->debug(print_r($response
      ->getBody(), TRUE));
    $this
      ->showLoggerHint();
  }

  /**
   *
   */
  protected function showLoggerHint() {
    static $hint = FALSE;
    if (!$hint) {
      $hint = TRUE;
      $this->develDumperManager
        ->message('Type: search_api, Severity: Debug', $this
        ->t('Check the logs for detailed Solr response bodies'), 'warning');
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
LoggerTrait::$logger protected property The logging channel to use.
LoggerTrait::getLogger public function Retrieves the logger.
LoggerTrait::logException protected function Logs an exception.
LoggerTrait::setLogger public function Sets the logger.
SolariumRequestLogger::$develDumperManager protected property The Devel dumper manager.
SolariumRequestLogger::getSubscribedEvents public static function Returns an array of event names this subscriber wants to listen to.
SolariumRequestLogger::postExecuteRequest public function Dumps a Solr response status as drupal messages and logs the response body.
SolariumRequestLogger::preExecuteRequest public function Dumps a Solr query as drupal messages.
SolariumRequestLogger::showLoggerHint protected function
SolariumRequestLogger::__construct public function Constructs a ModuleRouteSubscriber object.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.