def _set_log_level(self, level): # up to the desired level, we don't do anything, as we're a # "real" Twisted new-logger; for methods *after* the desired # level, we bind to the no_op method desired_index = log_levels.index(level) for (idx, name) in enumerate(log_levels): if name == 'none': continue if idx > desired_index: current = getattr(self, name, None) if not current == _no_op or current is None: setattr(self, name, _no_op) if name == 'error': setattr(self, 'failure', _no_op) else: if getattr(self, name, None) in (_no_op, None): if name == 'trace': setattr(self, "trace", self._trace) else: setattr(self, name, partial(self._log, LogLevel.lookupByName(name))) if name == 'error': setattr(self, "failure", self._failure) self._log_level = level
def __init__(self, logger_name, log_level="debug", log_format="json", log_output="stdout", sentry_dsn=None, firehose_delivery_stream=None): self.logger_name = "-".join([ logger_name, pkg_resources.get_distribution("autopush").version ]) self._filename = None self.log_level = LogLevel.lookupByName(log_level) if log_output == "stdout": self._output = sys.stdout elif log_output == "none": self._output = None else: self._filename = log_output self._output = "file" if log_format == "json": self.format_event = self.json_format else: self.format_event = formatEventAsClassicLogText if sentry_dsn: self.raven_client = raven.Client( release=raven.fetch_package_version("autopush")) else: self.raven_client = None if firehose_delivery_stream: self.firehose = FirehoseProcessor( stream_name=firehose_delivery_stream) else: self.firehose = None
def emit(self, level, *args, **kwargs): if log_levels.index(self._log_level) < log_levels.index(level): return if level == "trace": return self._trace(*args, **kwargs) level = LogLevel.lookupByName(level) return self._log(level, *args, **kwargs)