Exemple #1
0
    def set(self, new_level):
        """Changes the current loglevel of the root logger.

    Args:
      new_level: A string containing the new desired log level.

    Raises:
      HwDriverError if passed in an invalid logging level name.
    """
        new_level = new_level.lower()
        root_logger = logging.getLogger()

        try:
            level, fmt_string = LOGLEVEL_MAP[new_level]
            # Set servod's logging level.
            root_logger.setLevel(level)

            # Set the appropriate format string for each logging handler.
            for handler in root_logger.handlers:
                handler.formatter = logging.Formatter(fmt=fmt_string)

            # Set EC-3PO's logging level.
            for interface in self._interface._interface_list:
                if type(interface) is servo.ec3po_interface.EC3PO:
                    interface._console.oobm_queue.put('loglevel ' + str(level))

        except KeyError:
            raise hw_driver.HwDriverError('Unknown logging level. '
                                          '(known: critical, error, warning,'
                                          ' info, or debug)')
Exemple #2
0
 def set(self, value):
     """Set the value to |value|."""
     # While these controls _should_ be using a map so that the values
     # are converted to on/off, we still need to make sure.
     value = int(value)
     if value not in self.VALID_VALUES:
         raise hw_driver.HwDriverError('Invalid value: %d' % self.vstore[0])
     self.vstore[0] = value
Exemple #3
0
 def get(self):
     """Return the |self.vstore| for this flag."""
     if self.vstore[0] is None:
         # Initialize with a 0 unless a default is provided
         self.vstore[0] = int(self._params.get('default_value', 0))
     if self.vstore[0] not in self.VALID_VALUES:
         # The default must have been invalid. This is because set() guards
         # against invalid values already - the only other source of values.
         raise hw_driver.HwDriverError('Invalid default: %d' %
                                       self.vstore[0])
     return self.vstore[0]
Exemple #4
0
  def set(self, new_state):
    """Transit to a new state."""
    state_name = str(new_state)
    if state_name not in self._states:
      raise hw_driver.HwDriverError("Invalid state: '%s'. Supported states: %r"
                                    % (state_name, self._states.keys()))

    for control, state in self._states[state_name]:
      if not self._has_control(control):
        logging.info("Ignore setting non-exist control '%s' to '%s'.",
                     control, state)
        continue
      # TODO(hungte) Support more commands like sleep(ms).
      self._interface.set(control, state)
 def get(self):
   """Gets the current loglevel of the root logger."""
   root_logger = logging.getLogger()
   if len(root_logger.handlers) == 1:
     # In this case, servod is logging with basicConfig i.e. the handler
     # is not the gate-keeper, but rather the root logger itself.
     cur_level = root_logger.level
   else:
     for handler in root_logger.handlers:
       # The loglevel is the level of any handler that is not the Servod
       # handler as that one is always on debug.
       if not isinstance(handler,
                         servo.servo_logging.ServodRotatingFileHandler):
         # The file logger is always DEBUG and cannot be changed.
         cur_level = handler.level
         break
     else:
       raise hw_driver.HwDriverError('Root logger has no output handlers '
                                     'besides potentially the '
                                     'ServodRotatingFileHandler')
   return logging.getLevelName(cur_level).lower()
  def set(self, new_level):
    """Changes the current loglevel of the root logger.

    Args:
      new_level: A string containing the new desired log level.

    Raises:
      HwDriverError if passed in an invalid logging level name.
    """
    new_level = new_level.lower()
    root_logger = logging.getLogger()

    try:
      level, fmt_string = servo.servo_logging.LOGLEVEL_MAP[new_level]
    except KeyError:
      raise hw_driver.HwDriverError('Unknown logging level. '
                                    '(known: critical, error, warning,'
                                    ' info, or debug)')
    out_handlers = [handler for handler in root_logger.handlers if not
                    isinstance(handler,
                               servo.servo_logging.ServodRotatingFileHandler)]
    # Set servod's stdout logging level.
    if len(root_logger.handlers) == 1:
      # In this case, servod is logging with basicConfig i.e. the handler
      # is not the gate-keeper, but rather the root logger itself.
      root_logger.setLevel(level)
      # Set EC-3PO's logging level. This is only relevant when filtering through
      # the root-logger and not through the handlers.
      for interface in self._interface._interface_list:
        if isinstance(interface, servo.interface.ec3po_interface.EC3PO):
          interface.set_loglevel(new_level)
    else:
      for handler in out_handlers:
        handler.setLevel(level)
    # Irrespective of basicConfig or handler based logging, the
    # standard handlers need to be reset for this format.
    for handler in out_handlers:
      handler.setFormatter(logging.Formatter(fmt=fmt_string))