Add colored logging

This commit is contained in:
Florian Bruhin 2014-05-25 20:00:48 +02:00
parent f87e7b76f4
commit e89fc3d940

View File

@ -21,6 +21,12 @@ import logging
from logging import getLogger from logging import getLogger
from collections import deque from collections import deque
try:
# pylint: disable=import-error
from colorlog import ColoredFormatter
except ImportError:
ColoredFormatter = None
# The different loggers used. # The different loggers used.
statusbar = getLogger('statusbar') statusbar = getLogger('statusbar')
@ -53,23 +59,40 @@ def init_log(args):
numeric_level = logging._nameToLevel[level] numeric_level = logging._nameToLevel[level]
except KeyError: except KeyError:
raise ValueError("Invalid log level: {}".format(args.loglevel)) raise ValueError("Invalid log level: {}".format(args.loglevel))
simple_fmt = '{levelname}: {message}'
extended_fmt = ('{asctime} [{levelname}] [{name}|{module}:{funcName}:' extended_fmt = ('{asctime} [{levelname}] [{name}|{module}:{funcName}:'
'{lineno}] {message}') '{lineno}] {message}')
extended_datefmt = '%H:%M:%S' simple_fmt_colored = '%(log_color)s%(levelname)s%(reset)s: %(message)s'
simple_fmt = '{levelname}: {message}' extended_fmt_colored = ('%(green)s%(asctime)s%(reset)s '
simple_datefmt = None '%(log_color)s%(levelname)s%(reset)s '
'%(yellow)s%(name)s|%(module)s:%(funcName)s:'
'%(lineno)s%(reset)s %(message)s')
datefmt = '%H:%M:%S'
if numeric_level <= logging.DEBUG: if numeric_level <= logging.DEBUG:
console_formatter = logging.Formatter(extended_fmt, extended_datefmt, console_fmt = (extended_fmt if ColoredFormatter is None
'{') else extended_fmt_colored)
else: else:
console_formatter = logging.Formatter(simple_fmt, simple_datefmt, '{') console_fmt = (simple_fmt if ColoredFormatter is None
else simple_fmt_colored)
if ColoredFormatter is None:
console_formatter = logging.Formatter(console_fmt, datefmt, '{')
else:
console_formatter = ColoredFormatter(console_fmt, datefmt,
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
)
console_handler = logging.StreamHandler() console_handler = logging.StreamHandler()
console_handler.addFilter(logfilter) console_handler.addFilter(logfilter)
console_handler.setLevel(level) console_handler.setLevel(level)
console_handler.setFormatter(console_formatter) console_handler.setFormatter(console_formatter)
ram_formatter = logging.Formatter(extended_fmt, extended_datefmt, '{') ram_formatter = logging.Formatter(extended_fmt, datefmt, '{')
ram_handler = RAMHandler(capacity=200) ram_handler = RAMHandler(capacity=200)
ram_handler.setLevel(logging.NOTSET) ram_handler.setLevel(logging.NOTSET)
ram_handler.setFormatter(ram_formatter) ram_handler.setFormatter(ram_formatter)