summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Watt <jpewhacker@gmail.com>2020-03-11 18:28:45 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-03-12 23:03:11 +0000
commite860d93b76c142fdae90226bc68e4fe6e7b6a9db (patch)
tree35e04c053053dfa113e94f68283529bef855ae18
parentb3f3779adf63c0d970462a558a6205da1d30c0ed (diff)
downloadbitbake-e860d93b76c142fdae90226bc68e4fe6e7b6a9db.tar.gz
msg: Add helper to merge logging configs
Adds a function that can be used by UI front ends to merge logging configuration fragments. Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/msg.py89
1 files changed, 48 insertions, 41 deletions
diff --git a/lib/bb/msg.py b/lib/bb/msg.py
index 05645739d..582165dd0 100644
--- a/lib/bb/msg.py
+++ b/lib/bb/msg.py
@@ -229,6 +229,53 @@ def has_console_handler(logger):
return True
return False
+def mergeLoggingConfig(logconfig, userconfig):
+ logconfig = copy.deepcopy(logconfig)
+ userconfig = copy.deepcopy(userconfig)
+
+ # Merge config with the default config
+ if userconfig.get('version') != logconfig['version']:
+ raise BaseException("Bad user configuration version. Expected %r, got %r" % (logconfig['version'], userconfig.get('version')))
+
+ # Set some defaults to make merging easier
+ userconfig.setdefault("loggers", {})
+
+ # If a handler, formatter, or filter is defined in the user
+ # config, it will replace an existing one in the default config
+ for k in ("handlers", "formatters", "filters"):
+ logconfig.setdefault(k, {}).update(userconfig.get(k, {}))
+
+ seen_loggers = set()
+ for name, l in logconfig["loggers"].items():
+ # If the merge option is set, merge the handlers and
+ # filters. Otherwise, if it is False, this logger won't get
+ # add to the set of seen loggers and will replace the
+ # existing one
+ if l.get('bitbake_merge', True):
+ ulogger = userconfig["loggers"].setdefault(name, {})
+ ulogger.setdefault("handlers", [])
+ ulogger.setdefault("filters", [])
+
+ # Merge lists
+ l.setdefault("handlers", []).extend(ulogger["handlers"])
+ l.setdefault("filters", []).extend(ulogger["filters"])
+
+ # Replace other properties if present
+ if "level" in ulogger:
+ l["level"] = ulogger["level"]
+
+ if "propagate" in ulogger:
+ l["propagate"] = ulogger["propagate"]
+
+ seen_loggers.add(name)
+
+ # Add all loggers present in the user config, but not any that
+ # have already been processed
+ for name in set(userconfig["loggers"].keys()) - seen_loggers:
+ logconfig["loggers"][name] = userconfig["loggers"][name]
+
+ return logconfig
+
def setLoggingConfig(defaultconfig, userconfigfile=None):
logconfig = copy.deepcopy(defaultconfig)
@@ -244,47 +291,7 @@ def setLoggingConfig(defaultconfig, userconfigfile=None):
raise BaseException("Unrecognized file format: %s" % userconfigfile)
if userconfig.get('bitbake_merge', True):
- # Merge config with the default config
- if userconfig.get('version') != logconfig['version']:
- raise BaseException("Bad user configuration version. Expected %r, got %r" % (logconfig['version'], userconfig.get('version')))
-
- # Set some defaults to make merging easier
- userconfig.setdefault("loggers", {})
-
- # If a handler, formatter, or filter is defined in the user
- # config, it will replace an existing one in the default config
- for k in ("handlers", "formatters", "filters"):
- logconfig.setdefault(k, {}).update(userconfig.get(k, {}))
-
- seen_loggers = set()
- for name, l in logconfig["loggers"].items():
- # If the merge option is set, merge the handlers and
- # filters. Otherwise, if it is False, this logger won't get
- # add to the set of seen loggers and will replace the
- # existing one
- if l.get('bitbake_merge', True):
- ulogger = userconfig["loggers"].setdefault(name, {})
- ulogger.setdefault("handlers", [])
- ulogger.setdefault("filters", [])
-
- # Merge lists
- l.setdefault("handlers", []).extend(ulogger["handlers"])
- l.setdefault("filters", []).extend(ulogger["filters"])
-
- # Replace other properties if present
- if "level" in ulogger:
- l["level"] = ulogger["level"]
-
- if "propagate" in ulogger:
- l["propagate"] = ulogger["propagate"]
-
- seen_loggers.add(name)
-
- # Add all loggers present in the user config, but not any that
- # have already been processed
- for name in set(userconfig["loggers"].keys()) - seen_loggers:
- logconfig["loggers"][name] = userconfig["loggers"][name]
-
+ logconfig = mergeLoggingConfig(logconfig, userconfig)
else:
# Replace the entire default config
logconfig = userconfig