优化日志

This commit is contained in:
Windpicker-owo
2025-11-26 21:16:16 +08:00
parent e0157256b1
commit 0908fb50a0
100 changed files with 493 additions and 574 deletions

View File

@@ -28,8 +28,32 @@ logger = get_logger("adapter_manager")
def _load_class(module_name: str, class_name: str):
"""
从模块加载类。
有时插件加载器会将适配器类注册到包名下(例如 ``src.plugins.built_in.napcat_adapter``
而实际的类定义在 ``plugin.py`` 中。当子进程仅导入包时,该属性缺失会引发 AttributeError。
该辅助函数现在回退到 ``<module>.plugin`` 以支持这种布局。
"""
module = importlib.import_module(module_name)
return getattr(module, class_name)
if hasattr(module, class_name):
return getattr(module, class_name)
# Fallback for packages that keep implementations in plugin.py
try:
plugin_module = importlib.import_module(f"{module_name}.plugin")
if hasattr(plugin_module, class_name):
return getattr(plugin_module, class_name)
except ModuleNotFoundError:
pass
except Exception:
logger.error(
f"Failed to load class {class_name} from fallback module {module_name}.plugin",
exc_info=True,
)
# If we reach here, the class is truly missing
raise AttributeError(f"module '{module_name}' has no attribute '{class_name}'")
def _adapter_process_entry(
@@ -127,7 +151,7 @@ class AdapterProcess:
return True
except Exception as e:
logger.error(f"启动适配器子进程 {self.adapter_name} 失败: {e}", exc_info=True)
logger.error(f"启动适配器子进程 {self.adapter_name} 失败: {e}")
return False
async def stop(self) -> None:
@@ -154,7 +178,7 @@ class AdapterProcess:
self.process.join()
except Exception as e:
logger.error(f"停止适配器子进程 {self.adapter_name} 时发生错误: {e}", exc_info=True)
logger.error(f"停止适配器子进程 {self.adapter_name} 时发生错误: {e}")
finally:
self.process = None
self._incoming_queue = None
@@ -258,7 +282,7 @@ class AdapterManager:
return True
except Exception as e:
logger.error(f"启动适配器 {adapter_name} 失败: {e}", exc_info=True)
logger.error(f"启动适配器 {adapter_name} 失败: {e}")
return False
async def stop_adapter(self, adapter_name: str) -> None:
@@ -280,7 +304,7 @@ class AdapterManager:
await adapter.stop()
logger.info(f"适配器 {adapter_name} 已从主进程中停止")
except Exception as e:
logger.error(f"停止适配器 {adapter_name} 时出错: {e}", exc_info=True)
logger.error(f"停止适配器 {adapter_name} 时出错: {e}")
async def start_all_adapters(self) -> None:
"""启动所有已注册的适配器"""
@@ -358,4 +382,4 @@ def get_adapter_manager() -> AdapterManager:
return _adapter_manager
__all__ = ["AdapterManager", "AdapterProcess", "get_adapter_manager"]
__all__ = ["AdapterManager", "AdapterProcess", "get_adapter_manager"]

View File

@@ -428,7 +428,7 @@ class ComponentRegistry:
return True
except Exception as e:
logger.error(f"注册路由组件 '{router_info.name}' 时出错: {e}", exc_info=True)
logger.error(f"注册路由组件 '{router_info.name}' 时出错: {e}")
return False
def _register_adapter_component(self, adapter_info: AdapterInfo, adapter_class: type[BaseAdapter]) -> bool:

View File

@@ -342,7 +342,7 @@ class EventManager:
# 使用 create_task 异步执行,避免死锁
asyncio.create_task(self._scheduler_callback(event_name, params))
except Exception as e:
logger.error(f"调用 scheduler 回调时出错: {e}", exc_info=True)
logger.error(f"调用 scheduler 回调时出错: {e}")
timeout = handler_timeout if handler_timeout is not None else self._default_handler_timeout
concurrency = max_concurrency if max_concurrency is not None else self._default_handler_concurrency

View File

@@ -30,11 +30,11 @@ class PermissionManager(IPermissionManager):
"""异步初始化数据库连接"""
self.engine = await get_engine()
self.SessionLocal = async_sessionmaker(bind=self.engine)
logger.info("权限管理器初始化完成")
logger.debug("权限管理器初始化完成")
def _load_master_users(self):
"""从配置文件加载Master用户列表"""
logger.info("开始从配置文件加载Master用户...")
logger.debug("开始从配置文件加载Master用户...")
try:
master_users_config = global_config.permission.master_users
if not isinstance(master_users_config, list):
@@ -61,7 +61,7 @@ class PermissionManager(IPermissionManager):
logger.info(f"成功加载 {len(self._master_users)} 个Master用户")
except Exception as e:
logger.error(f"加载Master用户配置时发生严重错误: {e}", exc_info=True)
logger.error(f"加载Master用户配置时发生严重错误: {e}")
self._master_users = set()
def reload_master_users(self):

View File

@@ -179,7 +179,7 @@ class PluginManager:
error_msg = f"未知错误: {e!s}"
self.failed_plugins[plugin_name] = error_msg
logger.error(f"❌ 插件加载失败: {plugin_name} - {error_msg}")
logger.debug("详细错误信息: ", exc_info=True)
logger.debug("详细错误信息: ")
return False, 1
async def _register_adapter_components(self, plugin_name: str, plugin_instance: PluginBase) -> None:
@@ -238,7 +238,7 @@ class PluginManager:
)
except Exception as e:
logger.error(f"处理插件 '{plugin_name}' 的适配器组件时出错: {e}", exc_info=True)
logger.error(f"处理插件 '{plugin_name}' 的适配器组件时出错: {e}")
async def remove_registered_plugin(self, plugin_name: str) -> bool:
"""
@@ -682,7 +682,7 @@ class PluginManager:
asyncio.run(component_registry.unregister_plugin(plugin_name))
except Exception as e: # 捕获并记录卸载阶段协程调用错误
logger.debug(
f"卸载插件时调用 component_registry.unregister_plugin 失败: {e}", exc_info=True
f"卸载插件时调用 component_registry.unregister_plugin 失败: {e}"
)
# 从已加载插件中移除
@@ -700,7 +700,7 @@ class PluginManager:
return True
except Exception as e:
logger.error(f"❌ 插件卸载失败: {plugin_name} - {e!s}", exc_info=True)
logger.error(f"❌ 插件卸载失败: {plugin_name} - {e!s}")
return False