From 686f1ca90fc1115c1e7f1d47f397e4daa053b155 Mon Sep 17 00:00:00 2001 From: Alon Bar-Lev Date: Wed, 30 Apr 2025 17:58:29 +0300 Subject: [PATCH] logging: Move exc_info to common log. The keyword parameters are populated to common log and exc_info should be common to all methods anyway. This change the default to be exc_info=False for all cases similar to the standard python. Signed-off-by: Alon Bar-Lev --- python-stdlib/logging/logging.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/python-stdlib/logging/logging.py b/python-stdlib/logging/logging.py index 059c9604..3c2dbfda 100644 --- a/python-stdlib/logging/logging.py +++ b/python-stdlib/logging/logging.py @@ -125,7 +125,7 @@ class Logger: def getEffectiveLevel(self): return self.level or getLogger().level or _DEFAULT_LEVEL - def log(self, level, msg, *args, extra=None): + def log(self, level, msg, *args, exc_info=False, extra=None): if self.isEnabledFor(level): if args: if isinstance(args[0], dict): @@ -138,6 +138,16 @@ class Logger: for h in handlers: h.emit(record) + tb = None + if isinstance(exc_info, BaseException): + tb = exc_info + elif hasattr(sys, "exc_info"): + tb = sys.exc_info()[1] + if tb: + buf = io.StringIO() + sys.print_exception(tb, buf) + self.log(ERROR, buf.getvalue()) + def debug(self, msg, *args, **kwargs): self.log(DEBUG, msg, *args, **kwargs) @@ -153,17 +163,8 @@ class Logger: def critical(self, msg, *args, **kwargs): self.log(CRITICAL, msg, *args, **kwargs) - def exception(self, msg, *args, exc_info=True, **kwargs): + def exception(self, msg, *args, **kwargs): self.log(ERROR, msg, *args, **kwargs) - tb = None - if isinstance(exc_info, BaseException): - tb = exc_info - elif hasattr(sys, "exc_info"): - tb = sys.exc_info()[1] - if tb: - buf = io.StringIO() - sys.print_exception(tb, buf) - self.log(ERROR, buf.getvalue()) def addHandler(self, handler): self.handlers.append(handler)