This commit is contained in:
SengokuCola
2025-06-15 13:45:49 +08:00
2 changed files with 35 additions and 33 deletions

View File

@@ -20,6 +20,7 @@ LOG_DIR.mkdir(exist_ok=True)
_file_handler = None _file_handler = None
_console_handler = None _console_handler = None
def get_file_handler(): def get_file_handler():
"""获取文件handler单例""" """获取文件handler单例"""
global _file_handler global _file_handler
@@ -38,6 +39,7 @@ def get_file_handler():
_file_handler.setLevel(getattr(logging, file_level.upper(), logging.INFO)) _file_handler.setLevel(getattr(logging, file_level.upper(), logging.INFO))
return _file_handler return _file_handler
def get_console_handler(): def get_console_handler():
"""获取控制台handler单例""" """获取控制台handler单例"""
global _console_handler global _console_handler
@@ -260,7 +262,7 @@ def reconfigure_existing_loggers():
original_handlers = logger_obj.handlers[:] original_handlers = logger_obj.handlers[:]
for handler in original_handlers: for handler in original_handlers:
# 安全关闭handler # 安全关闭handler
if hasattr(handler, 'close'): if hasattr(handler, "close"):
handler.close() handler.close()
logger_obj.removeHandler(handler) logger_obj.removeHandler(handler)
@@ -793,7 +795,7 @@ def get_current_log_levels():
return { return {
"console_level": console_level, "console_level": console_level,
"file_level": file_level, "file_level": file_level,
"root_level": logging.getLevelName(logging.getLogger().level) "root_level": logging.getLevelName(logging.getLogger().level),
} }
@@ -1004,7 +1006,7 @@ def shutdown_logging():
# 关闭所有handler # 关闭所有handler
root_logger = logging.getLogger() root_logger = logging.getLogger()
for handler in root_logger.handlers[:]: for handler in root_logger.handlers[:]:
if hasattr(handler, 'close'): if hasattr(handler, "close"):
handler.close() handler.close()
root_logger.removeHandler(handler) root_logger.removeHandler(handler)
@@ -1013,10 +1015,10 @@ def shutdown_logging():
# 关闭所有其他logger的handler # 关闭所有其他logger的handler
logger_dict = logging.getLogger().manager.loggerDict logger_dict = logging.getLogger().manager.loggerDict
for name, logger_obj in logger_dict.items(): for _name, logger_obj in logger_dict.items():
if isinstance(logger_obj, logging.Logger): if isinstance(logger_obj, logging.Logger):
for handler in logger_obj.handlers[:]: for handler in logger_obj.handlers[:]:
if hasattr(handler, 'close'): if hasattr(handler, "close"):
handler.close() handler.close()
logger_obj.removeHandler(handler) logger_obj.removeHandler(handler)