From c790454e605758be62353169e7e7680f7645e4f2 Mon Sep 17 00:00:00 2001 From: NN <580536+NN---@users.noreply.github.com> Date: Wed, 8 Jan 2025 15:46:38 +0200 Subject: [PATCH 1/5] Introduce qualname in extra parameters providing qualified name including classname. --- Lib/logging/__init__.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index aa9b79d8cab4bb..a729cfb043730f 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1620,7 +1620,7 @@ def findCaller(self, stack_info=False, stacklevel=1): sinfo = sio.getvalue() if sinfo[-1] == '\n': sinfo = sinfo[:-1] - return co.co_filename, f.f_lineno, co.co_name, sinfo + return co.co_filename, f.f_lineno, co.co_name, sinfo, co.co_qualname def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None): @@ -1649,18 +1649,21 @@ def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False, #exception on some versions of IronPython. We trap it here so that #IronPython can use logging. try: - fn, lno, func, sinfo = self.findCaller(stack_info, stacklevel) + fn, lno, func, sinfo, qualname = self.findCaller(stack_info, stacklevel) except ValueError: # pragma: no cover - fn, lno, func = "(unknown file)", 0, "(unknown function)" + fn, lno, func, qualname = "(unknown file)", 0, "(unknown function)", "(unknown function)" else: # pragma: no cover - fn, lno, func = "(unknown file)", 0, "(unknown function)" + fn, lno, func, qualname = "(unknown file)", 0, "(unknown function)", "(unknown function)" if exc_info: if isinstance(exc_info, BaseException): exc_info = (type(exc_info), exc_info, exc_info.__traceback__) elif not isinstance(exc_info, tuple): exc_info = sys.exc_info() + if extra is None: + extra = {} + extra['__qualname__'] = qualname record = self.makeRecord(self.name, level, fn, lno, msg, args, - exc_info, func, extra, sinfo) + exc_info, func, extra, sinfo) self.handle(record) def handle(self, record): From 59493615954ad1dbf03a10f39bb149a39210fad9 Mon Sep 17 00:00:00 2001 From: NN <580536+NN---@users.noreply.github.com> Date: Wed, 8 Jan 2025 15:49:05 +0200 Subject: [PATCH 2/5] Fix formatting --- Lib/logging/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index a729cfb043730f..086f1f27b9aa0d 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1663,7 +1663,7 @@ def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False, extra = {} extra['__qualname__'] = qualname record = self.makeRecord(self.name, level, fn, lno, msg, args, - exc_info, func, extra, sinfo) + exc_info, func, extra, sinfo) self.handle(record) def handle(self, record): From ff067e75ebe9a1f9c4721ab09133725f6f638490 Mon Sep 17 00:00:00 2001 From: NN <580536+NN---@users.noreply.github.com> Date: Thu, 9 Jan 2025 11:46:57 +0200 Subject: [PATCH 3/5] Use co_qualname instead of co_name --- Lib/logging/__init__.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 086f1f27b9aa0d..8a83c1b08da837 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1620,7 +1620,7 @@ def findCaller(self, stack_info=False, stacklevel=1): sinfo = sio.getvalue() if sinfo[-1] == '\n': sinfo = sinfo[:-1] - return co.co_filename, f.f_lineno, co.co_name, sinfo, co.co_qualname + return co.co_filename, f.f_lineno, co.co_qualname, sinfo def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None): @@ -1649,19 +1649,16 @@ def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False, #exception on some versions of IronPython. We trap it here so that #IronPython can use logging. try: - fn, lno, func, sinfo, qualname = self.findCaller(stack_info, stacklevel) + fn, lno, func, sinfo = self.findCaller(stack_info, stacklevel) except ValueError: # pragma: no cover - fn, lno, func, qualname = "(unknown file)", 0, "(unknown function)", "(unknown function)" + fn, lno, func = "(unknown file)", 0, "(unknown function)" else: # pragma: no cover - fn, lno, func, qualname = "(unknown file)", 0, "(unknown function)", "(unknown function)" + fn, lno, func = "(unknown file)", 0, "(unknown function)" if exc_info: if isinstance(exc_info, BaseException): exc_info = (type(exc_info), exc_info, exc_info.__traceback__) elif not isinstance(exc_info, tuple): exc_info = sys.exc_info() - if extra is None: - extra = {} - extra['__qualname__'] = qualname record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra, sinfo) self.handle(record) From e96fa729a358ed0a91b51496fd406f8bbadff5e7 Mon Sep 17 00:00:00 2001 From: NN <580536+NN---@users.noreply.github.com> Date: Thu, 9 Jan 2025 11:50:27 +0200 Subject: [PATCH 4/5] Add use_qualname --- Lib/logging/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 8a83c1b08da837..e03a4132d38bbc 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1486,6 +1486,7 @@ def __init__(self, name, level=NOTSET): self.handlers = [] self.disabled = False self._cache = {} + self.use_qualname = false def setLevel(self, level): """ @@ -1620,7 +1621,8 @@ def findCaller(self, stack_info=False, stacklevel=1): sinfo = sio.getvalue() if sinfo[-1] == '\n': sinfo = sinfo[:-1] - return co.co_filename, f.f_lineno, co.co_qualname, sinfo + return (co.co_filename, f.f_lineno, + co.co_qualname if self.use_qualname else co.co_name, sinfo) def makeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None, sinfo=None): From 03ee242ba7970b4f5f434f99a8ca673d930667dd Mon Sep 17 00:00:00 2001 From: NN <580536+NN---@users.noreply.github.com> Date: Thu, 9 Jan 2025 21:06:38 +0200 Subject: [PATCH 5/5] Fix casing --- Lib/logging/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index e03a4132d38bbc..460ae0a7c63cdb 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1486,7 +1486,7 @@ def __init__(self, name, level=NOTSET): self.handlers = [] self.disabled = False self._cache = {} - self.use_qualname = false + self.use_qualname = False def setLevel(self, level): """