def actionConsoleLogRead(self, to, filter=None, read_size=32 * 1024, limit=500): log_file_path = "%s/debug.log" % config.log_dir log_file = open(log_file_path, encoding="utf-8") log_file.seek(0, 2) end_pos = log_file.tell() log_file.seek(max(0, end_pos - read_size)) if log_file.tell() != 0: log_file.readline() # Partial line junk pos_start = log_file.tell() lines = [] if filter: assert SafeRe.isSafePattern(filter) filter_re = re.compile(".*" + filter) for line in log_file: if filter and not filter_re.match(line): continue lines.append(line) num_found = len(lines) lines = lines[-limit:] return { "lines": lines, "pos_end": log_file.tell(), "pos_start": pos_start, "num_found": num_found }
def __init__(self, stream_id, ui_websocket, filter): self.stream_id = stream_id self.ui_websocket = ui_websocket if filter: if not SafeRe.isSafePattern(filter): raise Exception("Not a safe prex pattern") self.filter_re = re.compile(".*" + filter) else: self.filter_re = None return super(WsLogStreamer, self).__init__()