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)')
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
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]
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))