add color in logger

bzr revid: christophe@tinyerp.com-20080912084521-3zn8klcq3c37bg22
This commit is contained in:
Christophe Simonis 2008-09-12 10:45:21 +02:00
parent 855270078c
commit f163eb5624
1 changed files with 21 additions and 0 deletions

View File

@ -177,6 +177,27 @@ def init_logger():
logging.getLogger().addHandler(handler)
logging.getLogger().setLevel(logging.INFO)
if isinstance(handler, logging.StreamHandler) and os.name != 'nt':
# change color of level names
# uses of ANSI color codes
# see http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
# maybe use http://code.activestate.com/recipes/574451/
colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', None, 'default']
foreground = lambda f: 30 + colors.index(f)
background = lambda f: 40 + colors.index(f)
mapping = {
'DEBUG': ('blue', 'default'),
'INFO': ('green', 'default'),
'WARNING': ('yellow', 'default'),
'ERROR': ('red', 'default'),
'CRITICAL': ('white', 'red'),
}
for level, (fg, bg) in mapping.items():
msg = "\x1b[%dm\x1b[%dm%s\x1b[0m" % (foreground(fg), background(bg), level)
logging.addLevelName(getattr(logging, level), msg)
class Logger(object):
def notifyChannel(self, name, level, msg):