summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/msg.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/msg.py')
-rw-r--r--bitbake/lib/bb/msg.py74
1 files changed, 45 insertions, 29 deletions
diff --git a/bitbake/lib/bb/msg.py b/bitbake/lib/bb/msg.py
index 12d19ff8e1..77a7a0fed2 100644
--- a/bitbake/lib/bb/msg.py
+++ b/bitbake/lib/bb/msg.py
@@ -75,6 +75,25 @@ class BBLogFormatter(logging.Formatter):
75 msg += '\n' + ''.join(formatted) 75 msg += '\n' + ''.join(formatted)
76 return msg 76 return msg
77 77
78class BBLogFilter(object):
79 def __init__(self, handler, level, debug_domains):
80 self.stdlevel = level
81 self.debug_domains = debug_domains
82 loglevel = level
83 for domain in debug_domains:
84 if debug_domains[domain] < loglevel:
85 loglevel = debug_domains[domain]
86 handler.setLevel(loglevel)
87 handler.addFilter(self)
88
89 def filter(self, record):
90 if record.levelno >= self.stdlevel:
91 return True
92 if record.name in self.debug_domains and record.levelno >= self.debug_domains[record.name]:
93 return True
94 return False
95
96
78class Loggers(dict): 97class Loggers(dict):
79 def __getitem__(self, key): 98 def __getitem__(self, key):
80 if key in self: 99 if key in self:
@@ -84,12 +103,6 @@ class Loggers(dict):
84 dict.__setitem__(self, key, log) 103 dict.__setitem__(self, key, log)
85 return log 104 return log
86 105
87class DebugLevel(dict):
88 def __getitem__(self, key):
89 if key == "default":
90 key = domain.Default
91 return get_debug_level(key)
92
93def _NamedTuple(name, fields): 106def _NamedTuple(name, fields):
94 Tuple = collections.namedtuple(name, " ".join(fields)) 107 Tuple = collections.namedtuple(name, " ".join(fields))
95 return Tuple(*range(len(fields))) 108 return Tuple(*range(len(fields)))
@@ -110,44 +123,47 @@ domain = _NamedTuple("Domain", (
110 "Util")) 123 "Util"))
111logger = logging.getLogger("BitBake") 124logger = logging.getLogger("BitBake")
112loggers = Loggers() 125loggers = Loggers()
113debug_level = DebugLevel()
114 126
115# Message control functions 127# Message control functions
116# 128#
117 129
118def set_debug_level(level): 130loggerDefaultDebugLevel = 0
119 for log in loggers.itervalues(): 131loggerDefaultVerbose = False
120 log.setLevel(logging.NOTSET) 132loggerDefaultDomains = []
121 133
122 if level: 134def init_msgconfig(verbose, debug, debug_domains = []):
123 logger.setLevel(logging.DEBUG - level + 1) 135 """
124 else: 136 Set default verbosity and debug levels config the logger
125 logger.setLevel(logging.INFO) 137 """
138 bb.msg.loggerDebugLevel = debug
139 bb.msg.loggerVerbose = verbose
140 bb.msg.loggerDefaultDomains = debug_domains
126 141
127def get_debug_level(msgdomain = domain.Default): 142def addDefaultlogFilter(handler):
128 if not msgdomain:
129 level = logger.getEffectiveLevel()
130 else:
131 level = loggers[msgdomain].getEffectiveLevel()
132 return max(0, logging.DEBUG - level + 1)
133 143
134def set_verbose(level): 144 debug = loggerDefaultDebugLevel
135 if level: 145 verbose = loggerDefaultVerbose
136 logger.setLevel(BBLogFormatter.VERBOSE) 146 domains = loggerDefaultDomains
147
148 if debug:
149 level = BBLogFormatter.DEBUG - debug + 1
150 elif verbose:
151 level = BBLogFormatter.VERBOSE
137 else: 152 else:
138 logger.setLevel(BBLogFormatter.INFO) 153 level = BBLogFormatter.NOTE
139 154
140def set_debug_domains(domainargs): 155 debug_domains = {}
141 for (domainarg, iterator) in groupby(domainargs): 156 for (domainarg, iterator) in groupby(domains):
157 dlevel = len(tuple(iterator))
158 debug_domains["BitBake.%s" % domainarg] = logging.DEBUG - dlevel + 1
142 for index, msgdomain in enumerate(domain._fields): 159 for index, msgdomain in enumerate(domain._fields):
143 if msgdomain == domainarg: 160 if msgdomain == domainarg:
144 level = len(tuple(iterator))
145 if level:
146 loggers[index].setLevel(logging.DEBUG - level + 1)
147 break 161 break
148 else: 162 else:
149 warn(None, "Logging domain %s is not valid, ignoring" % domainarg) 163 warn(None, "Logging domain %s is not valid, ignoring" % domainarg)
150 164
165 BBLogFilter(handler, level, debug_domains)
166
151# 167#
152# Message handling functions 168# Message handling functions
153# 169#