<div><font face="arial, sans-serif">Add bold color output to log level name and standard color output to log msg</font></div><div><font face="arial, sans-serif">when bitbake is run from an iteractive console. Color output is only enabled</font></div>
<div><font face="arial, sans-serif">if the terminal supports color.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Signed-off-by: Seth Bollinger <<a href="mailto:seth.boll@gmail.com">seth.boll@gmail.com</a>></font></div>
<div><font face="arial, sans-serif">---</font></div><div><font face="arial, sans-serif"> bitbake/lib/bb/msg.py | 40 ++++++++++++++++++++++++++++++++++++++++</font></div><div><font face="arial, sans-serif"> bitbake/lib/bb/ui/knotty.py | 6 +++++-</font></div>
<div><font face="arial, sans-serif"> 2 files changed, 45 insertions(+), 1 deletions(-)</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py</font></div>
<div><font face="arial, sans-serif">index 9b39325..68b2ad7 100644</font></div><div><font face="arial, sans-serif">--- a/bitbake/lib/bb/msg.py</font></div><div><font face="arial, sans-serif">+++ b/bitbake/lib/bb/msg.py</font></div>
<div><font face="arial, sans-serif">@@ -55,6 +55,25 @@ class BBLogFormatter(logging.Formatter):</font></div><div><font face="arial, sans-serif"> CRITICAL: 'ERROR',</font></div><div><font face="arial, sans-serif"> }</font></div>
<div><font face="arial, sans-serif"> </font></div><div><font face="arial, sans-serif">+ color_enabled = False</font></div><div><font face="arial, sans-serif">+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(30,38)</font></div>
<div><font face="arial, sans-serif">+</font></div><div><font face="arial, sans-serif">+ COLORS = {</font></div><div><font face="arial, sans-serif">+ DEBUG3 : CYAN,</font></div><div><font face="arial, sans-serif">+ DEBUG2 : CYAN,</font></div>
<div><font face="arial, sans-serif">+ DEBUG : CYAN,</font></div><div><font face="arial, sans-serif">+ VERBOSE : WHITE,</font></div><div><font face="arial, sans-serif">+ NOTE : WHITE,</font></div>
<div><font face="arial, sans-serif">+ PLAIN : WHITE,</font></div><div><font face="arial, sans-serif">+ WARNING : YELLOW,</font></div><div><font face="arial, sans-serif">+ ERROR : RED,</font></div>
<div><font face="arial, sans-serif">+ CRITICAL: RED,</font></div><div><font face="arial, sans-serif">+ }</font></div><div><font face="arial, sans-serif">+</font></div><div><font face="arial, sans-serif">+ BLD = '\033[1;%dm'</font></div>
<div><font face="arial, sans-serif">+ STD = '\033[%dm'</font></div><div><font face="arial, sans-serif">+ RST = '\033[0m'</font></div><div><font face="arial, sans-serif">+</font></div><div><font face="arial, sans-serif"> def getLevelName(self, levelno):</font></div>
<div><font face="arial, sans-serif"> try:</font></div><div><font face="arial, sans-serif"> return self.levelnames[levelno]</font></div><div><font face="arial, sans-serif">@@ -67,6 +86,8 @@ class BBLogFormatter(logging.Formatter):</font></div>
<div><font face="arial, sans-serif"> if record.levelno == self.PLAIN:</font></div><div><font face="arial, sans-serif"> msg = record.getMessage()</font></div><div><font face="arial, sans-serif"> else:</font></div>
<div><font face="arial, sans-serif">+ if self.color_enabled:</font></div><div><font face="arial, sans-serif">+ self.colorize(record)</font></div><div><font face="arial, sans-serif"> msg = logging.Formatter.format(self, record)</font></div>
<div><font face="arial, sans-serif"> </font></div><div><font face="arial, sans-serif"> if hasattr(record, 'bb_exc_info'):</font></div><div><font face="arial, sans-serif">@@ -75,6 +96,25 @@ class BBLogFormatter(logging.Formatter):</font></div>
<div><font face="arial, sans-serif"> msg += '\n' + ''.join(formatted)</font></div><div><font face="arial, sans-serif"> return msg</font></div><div><font face="arial, sans-serif"> </font></div>
<div><font face="arial, sans-serif">+ def colorize(self, record):</font></div><div><font face="arial, sans-serif">+ color = self.COLORS[record.levelno]</font></div><div><font face="arial, sans-serif">+ if self.color_enabled and color is not None:</font></div>
<div><font face="arial, sans-serif">+ record.levelname = "".join([self.BLD % color, record.levelname, self.RST])</font></div><div><font face="arial, sans-serif">+ record.msg = "".join([self.STD % color, record.msg, self.RST])</font></div>
<div><font face="arial, sans-serif">+</font></div><div><font face="arial, sans-serif">+ def enable_color(self):</font></div><div><font face="arial, sans-serif">+ import curses</font></div><div><font face="arial, sans-serif">+ try:</font></div>
<div><font face="arial, sans-serif">+ win = None</font></div><div><font face="arial, sans-serif">+ win = curses.initscr()</font></div><div><font face="arial, sans-serif">+ if curses.has_colors():</font></div>
<div><font face="arial, sans-serif">+ self.color_enabled = True</font></div><div><font face="arial, sans-serif">+ except:</font></div><div><font face="arial, sans-serif">+ pass</font></div>
<div><font face="arial, sans-serif">+ finally:</font></div><div><font face="arial, sans-serif">+ if win is not None:</font></div><div><font face="arial, sans-serif">+ curses.endwin()</font></div>
<div><font face="arial, sans-serif">+</font></div><div><font face="arial, sans-serif"> class BBLogFilter(object):</font></div><div><font face="arial, sans-serif"> def __init__(self, handler, level, debug_domains):</font></div>
<div><font face="arial, sans-serif"> self.stdlevel = level</font></div><div><font face="arial, sans-serif">diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py</font></div><div><font face="arial, sans-serif">index b99a121..d9aa973 100644</font></div>
<div><font face="arial, sans-serif">--- a/bitbake/lib/bb/ui/knotty.py</font></div><div><font face="arial, sans-serif">+++ b/bitbake/lib/bb/ui/knotty.py</font></div><div><font face="arial, sans-serif">@@ -238,12 +238,16 @@ def main(server, eventHandler, tf = TerminalFilter):</font></div>
<div><font face="arial, sans-serif"> helper = uihelper.BBUIHelper()</font></div><div><font face="arial, sans-serif"> </font></div><div><font face="arial, sans-serif"> console = logging.StreamHandler(sys.stdout)</font></div>
<div><font face="arial, sans-serif">- format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")</font></div><div><font face="arial, sans-serif">+ format_str = "%(levelname)s: %(message)s"</font></div>
<div><font face="arial, sans-serif">+ format = bb.msg.BBLogFormatter(format_str)</font></div><div><font face="arial, sans-serif">+ if interactive:</font></div><div><font face="arial, sans-serif">+ format.enable_color()</font></div>
<div><font face="arial, sans-serif"> bb.msg.addDefaultlogFilter(console)</font></div><div><font face="arial, sans-serif"> console.setFormatter(format)</font></div><div><font face="arial, sans-serif"> logger.addHandler(console)</font></div>
<div><font face="arial, sans-serif"> if consolelogfile:</font></div><div><font face="arial, sans-serif"> bb.utils.mkdirhier(os.path.dirname(consolelogfile))</font></div><div><font face="arial, sans-serif">+ format = bb.msg.BBLogFormatter(format_str)</font></div>
<div><font face="arial, sans-serif"> consolelog = logging.FileHandler(consolelogfile)</font></div><div><font face="arial, sans-serif"> bb.msg.addDefaultlogFilter(consolelog)</font></div><div><font face="arial, sans-serif"> consolelog.setFormatter(format)</font></div>
<div><font face="arial, sans-serif">-- </font></div><div><font face="arial, sans-serif">1.7.2.5</font></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div>