class Logger

  1. 8.0.x lib/Drush/Log/Logger.php Logger
  2. 7.x lib/Drush/Log/Logger.php Logger
  3. master lib/Drush/Log/Logger.php Logger

Namespace

Drush\Log

Hierarchy

  • class Logger extends \Robo\Log\RoboLogger

Expanded class hierarchy of Logger

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
Logger::log public function
Logger::__construct public function

File

lib/Drush/Log/Logger.php, line 33
Contains \Drush\Log\Logger.

View source
class Logger extends RoboLogger {

  public function __construct(OutputInterface $output) {
    parent::__construct($output);
  }

  public function log($level, $message, array $context = array()) {
    // Convert to old $entry array for b/c calls
    $entry = $context +['type' $level 'message' $message 'timestamp' microtime(TRUE) 'memory' memory_get_usage()];

    // Drush\Log\Logger should take over all of the responsibilities
    // of drush_log, including caching the log messages and sending
    // log messages along to backend invoke.
    // TODO: move these implementations inside this class.
    $log = &drush_get_context('DRUSH_LOG', array());
    $log[] = $entry;
    if ($level != LogLevel::DEBUG_NOTIFY) {
      drush_backend_packet('log', $entry);
    }

    if (drush_get_context('DRUSH_NOCOLOR')) {
      $red = "[%s]";
      $yellow = "[%s]";
      $green = "[%s]";
    }
    else {
      $red = "\033[31;40m\033[1m[%s]\033[0m";
      $yellow = "\033[1;33;40m\033[1m[%s]\033[0m";
      $green = "\033[1;32;40m\033[1m[%s]\033[0m";
    }

    $verbose = drush_get_context('DRUSH_VERBOSE');
    $debug = drush_get_context('DRUSH_DEBUG');
    $debugnotify = drush_get_context('DRUSH_DEBUG_NOTIFY');

    // Save the original level in the context name, then
    // map it to a standard log level.
    $context['name'] = $level;
    switch ($level) {
      case LogLevel::WARNING:
      case LogLevel::CANCEL:
        $type_msg = sprintf($yellow, $level);
        $level = LogLevel::WARNING;
        break;
      case 'failed': // Obsolete; only here in case contrib is using it.
      case LogLevel::EMERGENCY: // Not used by Drush
      case LogLevel::ALERT: // Not used by Drush
      case LogLevel::ERROR:
        $type_msg = sprintf($red, $level);
        break;
      case LogLevel::OK:
      case 'completed': // Obsolete; only here in case contrib is using it.
      case LogLevel::SUCCESS:
      case 'status': // Obsolete; only here in case contrib is using it.
        // In quiet mode, suppress progress messages
        if (drush_get_context('DRUSH_QUIET')) {
          return TRUE;
        }
        $type_msg = sprintf($green, $level);
        $level = LogLevel::NOTICE;
        break;
      case LogLevel::NOTICE:
        $type_msg = sprintf("[%s]", $level);
        break;
      case 'message': // Obsolete; only here in case contrib is using it.
      case LogLevel::INFO:
        if (!$verbose) {
          // print nothing. exit cleanly.
          return TRUE;
        }
        $type_msg = sprintf("[%s]", $level);
        $level = LogLevel::INFO;
        break;
      case LogLevel::DEBUG_NOTIFY:
        $level = LogLevel::DEBUG; // Report 'debug', handle like 'preflight'
      case LogLevel::PREFLIGHT:
        if (!$debugnotify) {
          // print nothing unless --debug AND --verbose. exit cleanly.
          return TRUE;
        }
        $type_msg = sprintf("[%s]", $level);
        $level = LogLevel::DEBUG;
        break;
      case LogLevel::BOOTSTRAP:
      case LogLevel::DEBUG:
      default :
        if (!$debug) {
          // print nothing. exit cleanly.
          return TRUE;
        }
        $type_msg = sprintf("[%s]", $level);
        $level = LogLevel::DEBUG;
        break;
    }

    // When running in backend mode, log messages are not displayed, as they will
    // be returned in the JSON encoded associative array.
    if (drush_get_context('DRUSH_BACKEND')) {
      return;
    }

    $columns = drush_get_context('DRUSH_COLUMNS', 80);

    $width[1] = 11;
    // Append timer and memory values.
    if ($debug) {
      $timer = sprintf('[%s sec, %s]', round($entry['timestamp'] -DRUSH_REQUEST_TIME, 2), drush_format_size($entry['memory']));
      $entry['message'] = $entry['message'] . ' ' . $timer;
    }

    $message = $entry['message'];
    /*
      // Drush-styled output

      $message = $this->interpolate(
          $message,
          $this->getLogOutputStyler()->style($context)
      );

      $width[0] = ($columns - 11);

      $format = sprintf("%%-%ds%%%ds", $width[0], $width[1]);

      // Place the status message right aligned with the top line of the error message.
      $message = wordwrap($message, $width[0]);
      $lines = explode("\n", $message);
      $lines[0] = sprintf($format, $lines[0], $type_msg);
      $message = implode("\n", $lines);
      $this->getErrorStreamWrapper()->writeln($message);
*/
    // Robo-styled output
    parent::log($level, $message, $context);
  }
}
1 file declares its use of Logger
drush.inc in includes/drush.inc
The drush API implementation and helpers.