1
1
mirror of https://github.com/KenanZhu/AutoLibrary.git synced 2026-06-18 23:43:02 +08:00

fix(LogManager): 修复 CallerInfoFormatter 中 lineno 类型转换异常

This commit is contained in:
2026-03-21 00:55:17 +08:00
parent aef28b6d5e
commit 62c1ecdb07
+9 -4
View File
@@ -55,12 +55,17 @@ class CallerInfoFormatter(logging.Formatter):
if depth < len(record.stack_list): if depth < len(record.stack_list):
frame = record.stack_list[-depth-1] frame = record.stack_list[-depth-1]
record.filename = os.path.basename(frame.filename) record.filename = os.path.basename(frame.filename)
record.lineno = frame.lineno record.lineno = int(frame.lineno)
record.funcName = frame.name record.funcName = frame.name
record.name = record.name[-15:].ljust(15) record.name = record.name[-15:].ljust(15)
record.levelname = record.levelname.ljust(8) record.levelname = record.levelname.ljust(8)
record.filename = record.filename[-20:].ljust(20) 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) return super().format(record)
@@ -178,7 +183,7 @@ def instance(
_log_manager_instance = LogManager(log_dir) _log_manager_instance = LogManager(log_dir)
else: else:
if log_dir and _log_manager_instance.logDir() != os.path.abspath(log_dir): if log_dir and _log_manager_instance.logDir() != os.path.abspath(log_dir):
raise ValueError("LogManager 的实例已初始化,不能使用不同的日志目录") raise ValueError("LogManager 的实例已初始化, 不能使用不同的日志目录")
return _log_manager_instance return _log_manager_instance
@@ -187,5 +192,5 @@ def getLogger(
) -> logging.Logger: ) -> logging.Logger:
if _log_manager_instance is None: 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) return _log_manager_instance.getLogger(name)