[bitbake-devel] [PATCH v2] bitbake: Colorize knotty interactive console output
Robert Yang
liezhi.yang at windriver.com
Thu Nov 22 03:36:53 UTC 2012
I'm afraid that this patch doesn't work well, it will output chaotic message
after the "Ctrl-Z" and "fg":
On Fedora 17 64 bit
$ screen
$ bitbake xxx
$ C-Z
$ fg
then it will output like this:
(164 of 9052):
0:
linux-libc-headers-3.4.3-r0 do_fetch (pid 10632)
Currently 4 running tasks (164 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid 1Currently 4 running
tasks (165 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid 1Currently 5 running tasks (165 of
9052):
0:
linux-libc-headers-3.4.3-r0 do_fetch (pid 10632)
Currently 4 running tasks (165 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid
1Currently 4 running tasks (166 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid 1Currently 5
running tasks (166 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid 10632)
Currently 4 running tasks (166 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch
(pid 1Currently 4 running tasks (167 of 9052):
0: linux-libc-headers-3.4.3-r0 do_fetch (pid
1Currently 5 running tasks (167 of 9052):
Revert this patch would be OK.
// Robert
On 11/11/2012 11:17 PM, Seth Bollinger wrote:
> Add bold color output to log level name and standard color output to log msg
> when bitbake is run from an iteractive console. Color output is only
> enabled
> if the terminal supports color.
>
> Signed-off-by: Seth Bollinger <seth.boll at gmail.com>
> ---
> bitbake/lib/bb/msg.py | 40 ++++++++++++++++++++++++++++++++++++++++
> bitbake/lib/bb/ui/knotty.py | 6 +++++-
> 2 files changed, 45 insertions(+), 1 deletions(-)
>
> diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
> index 9b39325..68b2ad7 100644
> --- a/bitbake/lib/bb/msg.py
> +++ b/bitbake/lib/bb/msg.py
> @@ -55,6 +55,25 @@ class BBLogFormatter(logging.Formatter):
> CRITICAL: 'ERROR',
> }
>
> + color_enabled = False
> + BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(30,38)
> +
> + COLORS = {
> + DEBUG3 : CYAN,
> + DEBUG2 : CYAN,
> + DEBUG : CYAN,
> + VERBOSE : WHITE,
> + NOTE : WHITE,
> + PLAIN : WHITE,
> + WARNING : YELLOW,
> + ERROR : RED,
> + CRITICAL: RED,
> + }
> +
> + BLD = '\033[1;%dm'
> + STD = '\033[%dm'
> + RST = '\033[0m'
> +
> def getLevelName(self, levelno):
> try:
> return self.levelnames[levelno]
> @@ -67,6 +86,8 @@ class BBLogFormatter(logging.Formatter):
> if record.levelno == self.PLAIN:
> msg = record.getMessage()
> else:
> + if self.color_enabled:
> + self.colorize(record)
> msg = logging.Formatter.format(self, record)
>
> if hasattr(record, 'bb_exc_info'):
> @@ -75,6 +96,25 @@ class BBLogFormatter(logging.Formatter):
> msg += '\n' + ''.join(formatted)
> return msg
>
> + def colorize(self, record):
> + color = self.COLORS[record.levelno]
> + if self.color_enabled and color is not None:
> + record.levelname = "".join([self.BLD % color,
> record.levelname, self.RST])
> + record.msg = "".join([self.STD % color, record.msg, self.RST])
> +
> + def enable_color(self):
> + import curses
> + try:
> + win = None
> + win = curses.initscr()
> + if curses.has_colors():
> + self.color_enabled = True
> + except:
> + pass
> + finally:
> + if win is not None:
> + curses.endwin()
> +
> class BBLogFilter(object):
> def __init__(self, handler, level, debug_domains):
> self.stdlevel = level
> diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
> index b99a121..d9aa973 100644
> --- a/bitbake/lib/bb/ui/knotty.py
> +++ b/bitbake/lib/bb/ui/knotty.py
> @@ -238,12 +238,16 @@ def main(server, eventHandler, tf = TerminalFilter):
> helper = uihelper.BBUIHelper()
>
> console = logging.StreamHandler(sys.stdout)
> - format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
> + format_str = "%(levelname)s: %(message)s"
> + format = bb.msg.BBLogFormatter(format_str)
> + if interactive:
> + format.enable_color()
> bb.msg.addDefaultlogFilter(console)
> console.setFormatter(format)
> logger.addHandler(console)
> if consolelogfile:
> bb.utils.mkdirhier(os.path.dirname(consolelogfile))
> + format = bb.msg.BBLogFormatter(format_str)
> consolelog = logging.FileHandler(consolelogfile)
> bb.msg.addDefaultlogFilter(consolelog)
> consolelog.setFormatter(format)
>
>
>
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/bitbake-devel
>
More information about the bitbake-devel
mailing list