Skip to content

Instantly share code, notes, and snippets.

@simons-public
Created November 7, 2018 03:46
Show Gist options
  • Select an option

  • Save simons-public/7704cc3efe45bec0a42220fca2868bd9 to your computer and use it in GitHub Desktop.

Select an option

Save simons-public/7704cc3efe45bec0a42220fca2868bd9 to your computer and use it in GitHub Desktop.
import os
import logging
class ColorStreamHandler(logging.StreamHandler):
""" Colored StreamHandler """
@property
def is_tty(self):
isatty = getattr(self.stream, 'isatty', None)
return isatty
def emit(self, record):
level = record.levelname
message = self.format(record)
stream = self.stream
if not self.is_tty:
stream.write(message)
else:
message = self.color(message, level)
stream.write(message)
stream.write(getattr(self, 'terminator', '\n'))
self.flush()
@staticmethod
def color(message, level):
reset = '\033[0m'
colors = {
'NOTSET': None,
'DEBUG': '\033[36;1m', # bright cyan
'INFO': '\033[37m', # white
'WARNING': '\033[33m', # yellow
'ERROR': '\033[31m', # red
'CRITICAL': '\033[41m\033[37;1m', # bright white on red
}
return colors[level] + message + reset
format = "%(asctime)s %(name)s[%(process)s]: %(module)s %(levelname)s: %(message)s"
handler = ColorStreamHandler()
logging.basicConfig(level=logging.DEBUG,
format=format, handlers=[handler])
log = logging.getLogger()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment