summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/bitbake3
-rwxr-xr-xbin/bitdoc5
-rw-r--r--lib/bb/__init__.py2
-rw-r--r--lib/bb/build.py4
-rw-r--r--lib/bb/msg.py74
-rw-r--r--lib/bb/ui/knotty.py5
-rw-r--r--lib/bb/utils.py15
7 files changed, 56 insertions, 52 deletions
diff --git a/bin/bitbake b/bin/bitbake
index fdeeb36a4..56f39f8ef 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -190,7 +190,7 @@ Default BBFILES are the .bb files in the current directory.""")
# server is daemonized this logfile will be truncated.
cooker_logfile = os.path.join(os.getcwd(), "cooker.log")
- bb.utils.init_logger(bb.msg, configuration.verbose, configuration.debug,
+ bb.msg.init_msgconfig(configuration.verbose, configuration.debug,
configuration.debug_domains)
# Ensure logging messages get sent to the UI as events
@@ -228,6 +228,7 @@ Default BBFILES are the .bb files in the current directory.""")
try:
return server.launchUI(ui_main, server_connection.connection, server_connection.events)
finally:
+ bb.event.ui_queue = []
server_connection.terminate()
return 1
diff --git a/bin/bitdoc b/bin/bitdoc
index 98fb025a5..08a0173d7 100755
--- a/bin/bitdoc
+++ b/bin/bitdoc
@@ -430,9 +430,8 @@ Create a set of html pages (documentation) for a bitbake.conf....
action = "store_true", dest = "verbose", default = False )
options, args = parser.parse_args( sys.argv )
-
- if options.debug:
- bb.msg.set_debug_level(options.debug)
+
+ bb.msg.init_msgconfig(options.verbose, options.debug)
return options.config, options.output
diff --git a/lib/bb/__init__.py b/lib/bb/__init__.py
index d787271dd..4981daa42 100644
--- a/lib/bb/__init__.py
+++ b/lib/bb/__init__.py
@@ -56,7 +56,7 @@ logging.setLoggerClass(BBLogger)
logger = logging.getLogger("BitBake")
logger.addHandler(NullHandler())
-logger.setLevel(logging.INFO)
+logger.setLevel(logging.DEBUG - 2)
# This has to be imported after the setLoggerClass, as the import of bb.msg
# can result in construction of the various loggers.
diff --git a/lib/bb/build.py b/lib/bb/build.py
index 1c73ae26f..586867fd9 100644
--- a/lib/bb/build.py
+++ b/lib/bb/build.py
@@ -236,7 +236,7 @@ def exec_func_shell(function, d, runfile, cwd=None):
if fakerootcmd:
cmd = [fakerootcmd, runfile]
- if logger.isEnabledFor(logging.DEBUG):
+ if bb.msg.loggerVerbose[1]:
logfile = LogTee(logger, sys.stdout)
else:
logfile = sys.stdout
@@ -310,6 +310,8 @@ def _exec_task(fn, task, d, quieterr):
# Ensure python logging goes to the logfile
handler = logging.StreamHandler(logfile)
handler.setFormatter(logformatter)
+ # Always enable full debug output into task logfiles
+ handler.setLevel(logging.DEBUG - 2)
bblogger.addHandler(handler)
localdata.setVar('BB_LOGFILE', logfn)
diff --git a/lib/bb/msg.py b/lib/bb/msg.py
index 12d19ff8e..77a7a0fed 100644
--- a/lib/bb/msg.py
+++ b/lib/bb/msg.py
@@ -75,6 +75,25 @@ class BBLogFormatter(logging.Formatter):
msg += '\n' + ''.join(formatted)
return msg
+class BBLogFilter(object):
+ def __init__(self, handler, level, debug_domains):
+ self.stdlevel = level
+ self.debug_domains = debug_domains
+ loglevel = level
+ for domain in debug_domains:
+ if debug_domains[domain] < loglevel:
+ loglevel = debug_domains[domain]
+ handler.setLevel(loglevel)
+ handler.addFilter(self)
+
+ def filter(self, record):
+ if record.levelno >= self.stdlevel:
+ return True
+ if record.name in self.debug_domains and record.levelno >= self.debug_domains[record.name]:
+ return True
+ return False
+
+
class Loggers(dict):
def __getitem__(self, key):
if key in self:
@@ -84,12 +103,6 @@ class Loggers(dict):
dict.__setitem__(self, key, log)
return log
-class DebugLevel(dict):
- def __getitem__(self, key):
- if key == "default":
- key = domain.Default
- return get_debug_level(key)
-
def _NamedTuple(name, fields):
Tuple = collections.namedtuple(name, " ".join(fields))
return Tuple(*range(len(fields)))
@@ -110,44 +123,47 @@ domain = _NamedTuple("Domain", (
"Util"))
logger = logging.getLogger("BitBake")
loggers = Loggers()
-debug_level = DebugLevel()
# Message control functions
#
-def set_debug_level(level):
- for log in loggers.itervalues():
- log.setLevel(logging.NOTSET)
+loggerDefaultDebugLevel = 0
+loggerDefaultVerbose = False
+loggerDefaultDomains = []
- if level:
- logger.setLevel(logging.DEBUG - level + 1)
- else:
- logger.setLevel(logging.INFO)
+def init_msgconfig(verbose, debug, debug_domains = []):
+ """
+ Set default verbosity and debug levels config the logger
+ """
+ bb.msg.loggerDebugLevel = debug
+ bb.msg.loggerVerbose = verbose
+ bb.msg.loggerDefaultDomains = debug_domains
-def get_debug_level(msgdomain = domain.Default):
- if not msgdomain:
- level = logger.getEffectiveLevel()
- else:
- level = loggers[msgdomain].getEffectiveLevel()
- return max(0, logging.DEBUG - level + 1)
+def addDefaultlogFilter(handler):
-def set_verbose(level):
- if level:
- logger.setLevel(BBLogFormatter.VERBOSE)
+ debug = loggerDefaultDebugLevel
+ verbose = loggerDefaultVerbose
+ domains = loggerDefaultDomains
+
+ if debug:
+ level = BBLogFormatter.DEBUG - debug + 1
+ elif verbose:
+ level = BBLogFormatter.VERBOSE
else:
- logger.setLevel(BBLogFormatter.INFO)
+ level = BBLogFormatter.NOTE
-def set_debug_domains(domainargs):
- for (domainarg, iterator) in groupby(domainargs):
+ debug_domains = {}
+ for (domainarg, iterator) in groupby(domains):
+ dlevel = len(tuple(iterator))
+ debug_domains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1
for index, msgdomain in enumerate(domain._fields):
if msgdomain == domainarg:
- level = len(tuple(iterator))
- if level:
- loggers[index].setLevel(logging.DEBUG - level + 1)
break
else:
warn(None, "Logging domain %s is not valid, ignoring" % domainarg)
+ BBLogFilter(handler, level, debug_domains)
+
#
# Message handling functions
#
diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py
index 7a2681d2b..7c645adcc 100644
--- a/lib/bb/ui/knotty.py
+++ b/lib/bb/ui/knotty.py
@@ -74,6 +74,7 @@ def main(server, eventHandler):
console = logging.StreamHandler(sys.stdout)
format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
+ bb.msg.addDefaultlogFilter(console)
console.setFormatter(format)
logger.addHandler(console)
@@ -120,8 +121,8 @@ def main(server, eventHandler):
# For "normal" logging conditions, don't show note logs from tasks
# but do show them if the user has changed the default log level to
# include verbose/debug messages
- if logger.getEffectiveLevel() > format.VERBOSE:
- if event.taskpid != 0 and event.levelno <= format.NOTE:
+ #if logger.getEffectiveLevel() > format.VERBOSE:
+ if event.taskpid != 0 and event.levelno <= format.NOTE:
continue
logger.handle(event)
continue
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 4eac2852e..1cf1a8da4 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -830,21 +830,6 @@ def which(path, item, direction = 0):
return ""
-def init_logger(logger, verbose, debug, debug_domains):
- """
- Set verbosity and debug levels in the logger
- """
-
- if debug:
- bb.msg.set_debug_level(debug)
- elif verbose:
- bb.msg.set_verbose(True)
- else:
- bb.msg.set_debug_level(0)
-
- if debug_domains:
- bb.msg.set_debug_domains(debug_domains)
-
def to_boolean(string, default=None):
if not string:
return default