压制了无用日志

This commit is contained in:
strepsiades
2026-04-07 16:14:00 +08:00
parent 966f2e1270
commit 4d6f499508
7 changed files with 33 additions and 15 deletions
+2 -2
View File
@@ -131,7 +131,7 @@ class ApiClient:
f"total={stats['total']}, success={stats['success']}, failure={stats['failure']}"
)
def log_request_stats(self, level: str = "INFO") -> None:
def log_request_stats(self, level: str = "DEBUG") -> None:
"""输出当前客户端生命周期内的请求统计。"""
self._log(self.format_request_stats(), level=level)
@@ -140,7 +140,7 @@ class ApiClient:
return
self._log(
f"🔎 ApiClient request: method={method.upper()} endpoint={endpoint} elapsed={elapsed_seconds:.3f}s",
level="INFO",
level="DEBUG",
)
def _log(self, message: str, level: str = "DEBUG"):
+2 -2
View File
@@ -349,10 +349,10 @@ class BaseApiHandler(BaseNodeHandler[T]):
if diff_fields:
node_info = f"[{node_id}]" if node_id else ""
logger.info(" [DIFF] %s%s schema=%s", self.node_type, node_info, schema.__name__)
logger.debug(" [DIFF] %s%s schema=%s", self.node_type, node_info, schema.__name__)
for k, v in diff_fields.items():
orig_v = origin_dict.get(k)
logger.info("%s: %r%r", k, orig_v, v)
logger.debug("%s: %r%r", k, orig_v, v)
return diff_fields if diff_fields else None
+20 -7
View File
@@ -75,6 +75,8 @@ class BaseDataSource(ABC):
def __init__(self, poll_max_retries: int = 1, poll_interval: float = 0.5):
self._handlers: Dict[str, "NodeHandler"] = {}
self._collection: Optional["DataCollection"] = None
self._endpoint_name: str = "unknown"
self._datasource_type: str = self.__class__.__name__.lower()
# 按节点类型统计信息
# {"company": {"loaded": 10, "synced": 10, "success": 10, "failed": 0}, ...}
@@ -87,6 +89,17 @@ class BaseDataSource(ABC):
self._poll_interval = max(0, poll_interval)
self._sm_runtime: Optional[StateMachineRuntime] = None
def set_runtime_logging_context(self, *, endpoint_name: str, datasource_type: str) -> None:
self._endpoint_name = endpoint_name
self._datasource_type = datasource_type
def _datasource_log_prefix(self) -> str:
scope = self._collection.scope if self._collection is not None else "unbound"
return f"[{scope}][{self._endpoint_name}:{self._datasource_type}]"
def _node_log_prefix(self, node_type: str) -> str:
return f"{self._datasource_log_prefix()}[{node_type}]"
def _ensure_sm_runtime(self) -> StateMachineRuntime:
if self._sm_runtime is None:
cfg_path = Path(__file__).resolve().parents[1] / "config" / "node_state_machine.yaml"
@@ -469,7 +482,7 @@ class BaseDataSource(ABC):
# Handler 加载数据并创建节点
nodes = await handler.load()
logger.info("Loaded nodes for %s: %d", node_type, len(nodes))
logger.info("%s Loaded nodes for %s: %d", self._datasource_log_prefix(), node_type, len(nodes))
# 将节点写入 Collection:优先按 data_id 命中已有节点并更新
await self._upsert_loaded_nodes(handler, node_type, nodes)
@@ -477,7 +490,7 @@ class BaseDataSource(ABC):
# 统计加载的节点数
self._stats[node_type]["loaded"] += len(nodes)
except Exception as exc:
logger.error("❌ [%s] 加载失败: %s", node_type, exc)
logger.error("%s 加载失败: %s", self._node_log_prefix(node_type), exc)
if raise_on_error:
raise RuntimeError(f"[{node_type}] 加载失败: {exc}") from exc
continue
@@ -628,7 +641,7 @@ class BaseDataSource(ABC):
# 批量创建(传入节点列表)
if create_nodes:
logger.info(f"[{handler.node_type}] create提交开始: nodes={len(create_nodes)}")
logger.info(f"{self._node_log_prefix(handler.node_type)} create提交开始: nodes={len(create_nodes)}")
try:
create_results = await handler.create_all(create_nodes)
create_success = 0
@@ -646,7 +659,7 @@ class BaseDataSource(ABC):
create_skipped += 1
await self._handle_task_result(handler, result, async_tasks)
logger.info(
f"[{handler.node_type}] create提交完成: success={create_success}, "
f"{self._node_log_prefix(handler.node_type)} create提交完成: success={create_success}, "
f"in_progress={create_in_progress}, failed={create_failed}, skipped={create_skipped}"
)
except Exception as e:
@@ -682,7 +695,7 @@ class BaseDataSource(ABC):
# 轮询异步任务
if async_tasks and poll_async_tasks:
logger.info(
f"[{handler.node_type}] create已提交,push_id检查即将开始: pending={len(async_tasks)}, "
f"{self._node_log_prefix(handler.node_type)} create已提交,push_id检查即将开始: pending={len(async_tasks)}, "
f"first_wait={self._poll_interval:.3f}s"
)
await self._poll_async_tasks(handler, async_tasks)
@@ -833,13 +846,13 @@ class BaseDataSource(ABC):
if async_tasks and poll_interval > 0:
logger.info(
f"[{handler.node_type}] push_id首次检查前等待 {poll_interval:.3f}s, pending={len(async_tasks)}"
f"{self._node_log_prefix(handler.node_type)} push_id首次检查前等待 {poll_interval:.3f}s, pending={len(async_tasks)}"
)
await asyncio.sleep(poll_interval)
while async_tasks and retry_count < max_retries:
logger.info(
f"[{handler.node_type}] push_id检查 {retry_count + 1}/{max_retries}, pending={len(async_tasks)}"
f"{self._node_log_prefix(handler.node_type)} push_id检查 {retry_count + 1}/{max_retries}, pending={len(async_tasks)}"
)
# 批量查询
task_ids = list(async_tasks.values())