diff options
| author | Joshua Watt <JPEWhacker@gmail.com> | 2020-06-05 22:15:31 -0500 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-06-10 12:30:01 +0100 |
| commit | f302039e0e6643c729a6f6fb677fa48ce7247da3 (patch) | |
| tree | 01895f397f3c5e15ba421a26724eacb9ac9d8756 /bitbake | |
| parent | f8163c22f46551f81fd8cb74856d021a46cc0d65 (diff) | |
| download | poky-f302039e0e6643c729a6f6fb677fa48ce7247da3.tar.gz | |
bitbake: bitbake: lib: Add support for Logging Adapters
Creates a BBLoggingAdapter class that is monkey patched in place of the
logginer.LoggingAdapter. The new adapter is compatible with the BBLogger
class API, allowing adapters to be created for bitbake loggers. A new
BBLoggerMixin class is used to reduce code duplication between the BBLogger
and BBLoggerAdapter classes.
(Bitbake rev: 8f93d776fd6ce1a6d7094da9a9e00b5e9ee178f9)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
| -rw-r--r-- | bitbake/lib/bb/__init__.py | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index b96466e654..cd53603a47 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py | |||
| @@ -35,12 +35,14 @@ class NullHandler(logging.Handler): | |||
| 35 | def emit(self, record): | 35 | def emit(self, record): |
| 36 | pass | 36 | pass |
| 37 | 37 | ||
| 38 | Logger = logging.getLoggerClass() | 38 | class BBLoggerMixin(object): |
| 39 | class BBLogger(Logger): | 39 | def __init__(self, *args, **kwargs): |
| 40 | def __init__(self, name): | 40 | # Does nothing to allow calling super() from derived classes |
| 41 | pass | ||
| 42 | |||
| 43 | def setup_bblogger(self, name): | ||
| 41 | if name.split(".")[0] == "BitBake": | 44 | if name.split(".")[0] == "BitBake": |
| 42 | self.debug = self.bbdebug | 45 | self.debug = self.bbdebug |
| 43 | Logger.__init__(self, name) | ||
| 44 | 46 | ||
| 45 | def bbdebug(self, level, msg, *args, **kwargs): | 47 | def bbdebug(self, level, msg, *args, **kwargs): |
| 46 | loglevel = logging.DEBUG - level + 1 | 48 | loglevel = logging.DEBUG - level + 1 |
| @@ -60,10 +62,42 @@ class BBLogger(Logger): | |||
| 60 | def verbnote(self, msg, *args, **kwargs): | 62 | def verbnote(self, msg, *args, **kwargs): |
| 61 | return self.log(logging.INFO + 2, msg, *args, **kwargs) | 63 | return self.log(logging.INFO + 2, msg, *args, **kwargs) |
| 62 | 64 | ||
| 65 | Logger = logging.getLoggerClass() | ||
| 66 | class BBLogger(Logger, BBLoggerMixin): | ||
| 67 | def __init__(self, name, *args, **kwargs): | ||
| 68 | self.setup_bblogger(name) | ||
| 69 | super().__init__(name, *args, **kwargs) | ||
| 63 | 70 | ||
| 64 | logging.raiseExceptions = False | 71 | logging.raiseExceptions = False |
| 65 | logging.setLoggerClass(BBLogger) | 72 | logging.setLoggerClass(BBLogger) |
| 66 | 73 | ||
| 74 | class BBLoggerAdapter(logging.LoggerAdapter, BBLoggerMixin): | ||
| 75 | def __init__(self, logger, *args, **kwargs): | ||
| 76 | self.setup_bblogger(logger.name) | ||
| 77 | super().__init__(logger, *args, **kwargs) | ||
| 78 | |||
| 79 | if sys.version_info < (3, 6): | ||
| 80 | # These properties were added in Python 3.6. Add them in older versions | ||
| 81 | # for compatibility | ||
| 82 | @property | ||
| 83 | def manager(self): | ||
| 84 | return self.logger.manager | ||
| 85 | |||
| 86 | @manager.setter | ||
| 87 | def manager(self, value): | ||
| 88 | self.logger.manager = value | ||
| 89 | |||
| 90 | @property | ||
| 91 | def name(self): | ||
| 92 | return self.logger.name | ||
| 93 | |||
| 94 | def __repr__(self): | ||
| 95 | logger = self.logger | ||
| 96 | level = getLevelName(logger.getEffectiveLevel()) | ||
| 97 | return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level) | ||
| 98 | |||
| 99 | logging.LoggerAdapter = BBLoggerAdapter | ||
| 100 | |||
| 67 | logger = logging.getLogger("BitBake") | 101 | logger = logging.getLogger("BitBake") |
| 68 | logger.addHandler(NullHandler()) | 102 | logger.addHandler(NullHandler()) |
| 69 | logger.setLevel(logging.DEBUG - 2) | 103 | logger.setLevel(logging.DEBUG - 2) |
