def _recorder_worker(self): while True: occ = self._record_queue.get() if occ is None: self._record_queue.task_done() break self._accepting_new.wait() with self._recorded_new: occ.timeline = self occ.timestamp = timestamp.current() occ.index = next(self._index_iter) if self._last is None: self._beginning = occ self._last = occ else: assert self._last.timestamp <= occ.timestamp occ.previous = self._last self._last._next = occ self._last = occ self._recorded_new.notify_all() self._record_queue.task_done() for exp, callback in tuple(self._listeners): if exp == occ: callback(occ)
def write(level, text, _to_files=all): assert level in LEVELS t = timestamp.current() format_string = "{0}+{1:" + timestamp_format + "}: " prefix = fmt(format_string, level[0].upper(), t) text = getattr(_tls, "prefix", "") + text indent = "\n" + (" " * len(prefix)) output = indent.join(text.split("\n")) output = prefix + output + "\n\n" with _lock: if _to_files is all: _to_files = _files.values() for file in _to_files: file.write(level, output) return text