压制了无用日志
This commit is contained in:
@@ -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"):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user