From 6c415915a5980ed8f750a6d73d243b2a4842adf2 Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Thu, 26 Nov 2015 17:15:19 +0100 Subject: color warnings and errors differently, fixes #24 --- voctogui/lib/loghandler.py | 35 +++++++++++++++++++++++++++++++++++ voctogui/voctogui.py | 11 +++++------ 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 voctogui/lib/loghandler.py (limited to 'voctogui') diff --git a/voctogui/lib/loghandler.py b/voctogui/lib/loghandler.py new file mode 100644 index 0000000..4e48c7d --- /dev/null +++ b/voctogui/lib/loghandler.py @@ -0,0 +1,35 @@ +#!/usr/bin/python3 +import logging + +class LogFormatter(logging.Formatter): + def __init__(self, docolor): + super().__init__() + self.docolor = docolor + + def formatMessage(self, record): + if self.docolor: + c_lvl = 33 + c_mod = 32 + c_msg = 0 + + if record.levelno == logging.WARNING: + c_lvl = 31 + #c_mod = 33 + c_msg = 33 + + elif record.levelno > logging.WARNING: + c_lvl = 31 + c_mod = 31 + c_msg = 31 + + fmt = '\x1b['+str(c_lvl)+'m%(levelname)8s\x1b[0m \x1b['+str(c_mod)+'m%(name)s\x1b['+str(c_msg)+'m: %(message)s\x1b[0m' + else: + fmt = '%(levelname)8s %(name)s: %(message)s' + + return fmt % record.__dict__ + + +class LogHandler(logging.StreamHandler): + def __init__(self, docolor): + super().__init__() + self.setFormatter(LogFormatter(docolor)) diff --git a/voctogui/voctogui.py b/voctogui/voctogui.py index 9f0cc0a..083b004 100755 --- a/voctogui/voctogui.py +++ b/voctogui/voctogui.py @@ -29,6 +29,7 @@ Gtk.init([]) from lib.args import Args from lib.config import Config from lib.ui import Ui +from lib.loghandler import LogHandler import lib.connection as Connection @@ -85,6 +86,9 @@ def main(): # configure logging docolor = (Args.color == 'always') or (Args.color == 'auto' and sys.stderr.isatty()) + handler = LogHandler(docolor) + logging.root.addHandler(handler) + if Args.verbose >= 2: level = logging.DEBUG elif Args.verbose == 1: @@ -92,12 +96,7 @@ def main(): else: level = logging.WARNING - if docolor: - format = '\x1b[33m%(levelname)8s\x1b[0m \x1b[32m%(name)s\x1b[0m: %(message)s' - else: - format = '%(levelname)8s %(name)s: %(message)s' - - logging.basicConfig(level=level, format=format) + logging.root.setLevel(level) # make killable by ctrl-c logging.debug('setting SIGINT handler') -- cgit v1.2.3