summaryrefslogtreecommitdiffstats
path: root/lib/bb/msg.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/msg.py')
-rw-r--r--lib/bb/msg.py74
1 files changed, 45 insertions, 29 deletions
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
#