def _timeout_observer(self, connection_observer, timeout, passed_time, runner_logger, kind="background_run"): """ Set connection_observer status to timed-out :param connection_observer: ConnectionObserver instance (command or event) :param timeout: timeout :param passed_time: passed time :param runner_logger: runner logger :param kind: Kind of running :return: None """ if not connection_observer.life_status.was_on_timeout_called: connection_observer.life_status.was_on_timeout_called = True if not connection_observer.done(): if connection_observer.is_command(): exception = CommandTimeout(connection_observer=connection_observer, timeout=timeout, kind=kind, passed_time=passed_time) else: exception = ConnectionObserverTimeout(connection_observer=connection_observer, timeout=timeout, kind=kind, passed_time=passed_time) connection_observer.set_exception(exception) connection_observer.on_timeout() observer_info = "{}.{}".format(connection_observer.__class__.__module__, connection_observer) timeout_msg = "has timed out after {:.2f} seconds.".format(passed_time) msg = "{} {}".format(observer_info, timeout_msg) # levels_to_go_up: extract caller info to log where .time_out_observer has been called from connection_observer._log(logging.INFO, msg, levels_to_go_up=2) log_into_logger(runner_logger, level=logging.DEBUG, msg="{} {}".format(connection_observer, timeout_msg), levels_to_go_up=1)
def _log(self, msg, level, levels_to_go_up=1): if self.logger: try: # levels_to_go_up=1 : extract caller info to log where _log() has been called from log_into_logger(logger=self.logger, level=level, msg=msg, levels_to_go_up=levels_to_go_up) except Exception as err: print(err) # logging errors should not propagate
def _log(self, lvl, msg, extra=None, levels_to_go_up=1): extra_params = { 'log_name': self.get_logger_name() } if extra: extra_params.update(extra) # levels_to_go_up=1 : extract caller info to log where _log() has been called from log_into_logger(self.logger, lvl, msg, extra=extra_params, levels_to_go_up=levels_to_go_up) log_into_logger(self.device_logger, lvl, msg, extra=extra_params, levels_to_go_up=levels_to_go_up)
def _log(self, level, msg, extra=None, levels_to_go_up=1): if self.logger: extra_params = { 'log_name': self.name } if extra: extra_params.update(extra) try: # levels_to_go_up=1 : extract caller info to log where _log() has been called from log_into_logger(logger=self.logger, level=level, msg=msg, extra=extra_params, levels_to_go_up=levels_to_go_up) except Exception as err: print(err) # logging errors should not propagate
def time_out_observer(connection_observer, timeout, passed_time, runner_logger, kind="background_run"): """Set connection_observer status to timed-out""" if not connection_observer.life_status.was_on_timeout_called: connection_observer.life_status.was_on_timeout_called = True if not connection_observer.done(): if hasattr(connection_observer, "command_string"): exception = CommandTimeout( connection_observer=connection_observer, timeout=timeout, kind=kind, passed_time=passed_time) else: exception = ConnectionObserverTimeout( connection_observer=connection_observer, timeout=timeout, kind=kind, passed_time=passed_time) # TODO: secure_data_received() may change status of connection_observer # TODO: and if secure_data_received() runs inside threaded connection - we have race connection_observer.set_exception(exception) connection_observer.on_timeout() observer_info = "{}.{}".format( connection_observer.__class__.__module__, connection_observer) timeout_msg = "has timed out after {:.2f} seconds.".format( passed_time) msg = "{} {}".format(observer_info, timeout_msg) # levels_to_go_up: extract caller info to log where .time_out_observer has been called from connection_observer._log(logging.INFO, msg, levels_to_go_up=2) log_into_logger(runner_logger, level=logging.DEBUG, msg="{} {}".format(connection_observer, timeout_msg), levels_to_go_up=1)
def fun_using_helper_logging(): log_into_logger(logger, level=logging.WARNING, msg="hi", extra={'transfer_direction': '<'})