From 62c1ecdb077729d1b5d80060d15edad793c116e8 Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Sat, 21 Mar 2026 00:55:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(LogManager):=20=E4=BF=AE=E5=A4=8D=20CallerI?= =?UTF-8?q?nfoFormatter=20=E4=B8=AD=20lineno=20=E7=B1=BB=E5=9E=8B=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/managers/log/LogManager.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/managers/log/LogManager.py b/src/managers/log/LogManager.py index a931ada..28a860c 100644 --- a/src/managers/log/LogManager.py +++ b/src/managers/log/LogManager.py @@ -55,12 +55,17 @@ class CallerInfoFormatter(logging.Formatter): if depth < len(record.stack_list): frame = record.stack_list[-depth-1] record.filename = os.path.basename(frame.filename) - record.lineno = frame.lineno + record.lineno = int(frame.lineno) record.funcName = frame.name record.name = record.name[-15:].ljust(15) record.levelname = record.levelname.ljust(8) record.filename = record.filename[-20:].ljust(20) - record.lineno = f"{record.lineno:04d}" + # Ensure lineno is always integer before formatting + try: + lineno_int = int(record.lineno) + except (ValueError, TypeError): + lineno_int = 0 + record.lineno = f"{lineno_int:04d}" return super().format(record) @@ -178,7 +183,7 @@ def instance( _log_manager_instance = LogManager(log_dir) else: if log_dir and _log_manager_instance.logDir() != os.path.abspath(log_dir): - raise ValueError("LogManager 的实例已初始化,不能使用不同的日志目录") + raise ValueError("LogManager 的实例已初始化, 不能使用不同的日志目录") return _log_manager_instance @@ -187,5 +192,5 @@ def getLogger( ) -> logging.Logger: if _log_manager_instance is None: - raise RuntimeError("LogManager 未初始化,请先调用 LogManager.instance(log_dir) 初始化") + raise RuntimeError("LogManager 未初始化, 请先调用 LogManager.instance(log_dir) 初始化") return _log_manager_instance.getLogger(name)