Это уже возможно в stdlib при использовании экземпляра BufferingHandler
в специальном регистре.Если вы используете бесконечный буфер, он никогда не очистится.
>>> myhandler = logging.handlers.BufferingHandler(capacity=float('inf'))
>>> logging.basicConfig(handlers=[myhandler])
>>> logging.warning("uh-oh")
>>> logging.error("boom")
>>> myhandler.buffer
[<LogRecord: root, 30, <ipython-input-11-feb6b3c2bc6f>, 1, "uh-oh">,
<LogRecord: root, 40, <ipython-input-12-fd4144525168>, 1, "boom">]