Skip to content

Instantly share code, notes, and snippets.

@mndrake
Last active March 23, 2022 15:50
Show Gist options
  • Save mndrake/ed7d6e58efc68c40e5917ed94e1ff033 to your computer and use it in GitHub Desktop.
Save mndrake/ed7d6e58efc68c40e5917ed94e1ff033 to your computer and use it in GitHub Desktop.
from io import StringIO
import logging
class StreamingLog(object):
def __init__(self, logger_name, level=logging.INFO):
self.stream = StringIO()
self.handler = logging.StreamHandler(self.stream)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
self.handler.setFormatter(formatter)
self.log = logging.getLogger(logger_name)
self.log.setLevel(level)
self.log.addHandler(self.handler)
def dump(self):
return self.stream.getvalue()
def info(self, message):
self.log.info(message)
def warning(self, message):
self.log.warning(message)
def error(self, message):
self.log.error(message)
def debug(self, message):
self.log.debug(message)
if __name__ == '__main__':
### EXAMPLE ###
def my_function():
log = StreamingLog('my_function', logging.INFO)
log.info('info message')
log.debug('debug message') # will not log if INFO or higher level
log.warning('warning message')
log.error('error message')
response = {
'result': 42,
'log': log.dump()
}
return response
my_function()
# {'result': 42,
# 'log': '2022-03-23 09:41:58,719 - my_function - INFO - info message\n2022-03-23 09:41:58,719 - my_function - WARNING - warning message\n2022-03-23 09:41:58,719 - my_function - ERROR - error message\n'}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment