How to write custom console log function to output only on the console window log messages on a single line (not append) until the first regular log record.
progress = ProgressConsoleHandler()
console = logging.StreamHandler()
logger = logging.getLogger('test')
logger.setLevel(logging.DEBUG)
logger.addHandler(console)
logger.addHandler(progress)
logger.info('test1')
for i in range(3):
logger.progress('remaining %d seconds' % i)
time.sleep(1)
logger.info('test2')
So that the console output is only three lines:
INFO: test1
remaining 0 seconds...
INFO: test2
Any suggestions on the best way on how to implement this?
Notice that only one handler is being registered, and the
extra
keyword argument to let the handler know it should stay on one line. There is more logic in theemit()
method to handle changes between messages that should stay on one line and messages that need to have their own line.