From 2de121703d11809d02815e6434674c7ec5e5704c Mon Sep 17 00:00:00 2001 From: Ed Bartosh Date: Thu, 8 Sep 2016 14:02:33 +0300 Subject: bitbake: event.py: output errors and warnings to stderr All logging messages are printed on stdout when processing UI event queue. This makes it impossible to distinguish between errors and normal bitbake output. Output to stderror or stdout depending on log level should fix this. (Bitbake rev: c4029c4f00197804511fc71e1190d34eb120212a) Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- bitbake/lib/bb/event.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index 5ffe89eae3..2cac074a05 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py @@ -117,21 +117,28 @@ def print_ui_queue(): logger = logging.getLogger("BitBake") if not _uiready: from bb.msg import BBLogFormatter - console = logging.StreamHandler(sys.stdout) - console.setFormatter(BBLogFormatter("%(levelname)s: %(message)s")) - logger.handlers = [console] + stdout = logging.StreamHandler(sys.stdout) + stderr = logging.StreamHandler(sys.stderr) + formatter = BBLogFormatter("%(levelname)s: %(message)s") + stdout.setFormatter(formatter) + stderr.setFormatter(formatter) # First check to see if we have any proper messages msgprint = False for event in ui_queue: if isinstance(event, logging.LogRecord): if event.levelno > logging.DEBUG: + if event.levelno >= logging.WARNING: + logger.handlers = [stderr] + else: + logger.handlers = [stdout] logger.handle(event) msgprint = True if msgprint: return # Nope, so just print all of the messages we have (including debug messages) + logger.handlers = [stdout] for event in ui_queue: if isinstance(event, logging.LogRecord): logger.handle(event) -- cgit v1.2.3-54-g00ecf