from logging import LogRecord, Handler, ERROR from logging.handlers import MemoryHandler from typing import Optional class EWSMemoryHandler(MemoryHandler): def __init__(self, capacity: int, flushLevel: int = ..., target: Optional[Handler] = ..., flushOnClose: bool = ...) -> None: super().__init__(capacity, flushLevel, target, flushOnClose) self.target = target def flush(self) -> None: self.acquire() try: if self.target: merged_messages = "" for record in self.buffer: # self.target.handle(record) # print(record.message) merged_messages += record.message + "\n" if merged_messages is not "": print(f"BEGIN:{merged_messages}:END") merged_record = LogRecord("merged_record", ERROR, "pathname", 0, merged_messages, None, ) self.target.handle(merged_record) self.buffer = [] finally: self.release() def shouldFlush(self, record: LogRecord) -> bool: return False