public function DrushLog::log

8.0.x DrushLog.php public DrushLog::log($level, $message, array $context = array())
7.x DrushLog.php public DrushLog::log($level, $message, array $context = array())
master DrushLog.php public DrushLog::log($level, $message, array $context = array())

File

lib/Drush/Log/DrushLog.php, line 62
Contains \Drush\Log\DrushLog.

Namespace

Drush\Log

Class

DrushLog
Redirects Drupal logging messages to Drush log.

Code

public function log($level, $message, array $context = array()) {
  // Translate the RFC logging levels into their Drush counterparts, more or
  // less.
  // @todo ALERT, CRITICAL and EMERGENCY are considered show-stopping errors,
  // and they should cause Drush to exit or panic. Not sure how to handle this,
  // though.
  switch ($level) {
    case RfcLogLevel::ALERT:
    case RfcLogLevel::CRITICAL:
    case RfcLogLevel::EMERGENCY:
    case RfcLogLevel::ERROR:
      $error_type = LogLevel::ERROR;
      break;

    case RfcLogLevel::WARNING:
      $error_type = LogLevel::WARNING;
      break;

      // TODO: RfcLogLevel::DEBUG should be 'debug' rather than 'notice'?
    case RfcLogLevel::DEBUG:
    case RfcLogLevel::INFO:
    case RfcLogLevel::NOTICE:
      $error_type = LogLevel::NOTICE;
      break;

      // TODO: Unknown log levels that are not defined
      // in Psr\Log\LogLevel or Drush\Log\LogLevel SHOULD NOT be used.  See
      // https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
      // We should convert these to 'notice'.
    default:
      $error_type = $level;
      break;
  }

  // Populate the message placeholders and then replace them in the message.
  $message_placeholders = $this->parser->parseMessagePlaceholders($message, $context);
  $message = empty($message_placeholders) ? $message : strtr($message, $message_placeholders);

  $this->logger->log($error_type, $message, $context);
}