[NX-101 Issue] Refactor error handling to use consistent API error format
Replaced all inline error messages with the standardized `api_error` helper for consistent error response formatting. This improves clarity, maintainability, and ensures uniform error structures across the application. Updated logging for collector failures to include error class and switched to warning level for target unreachable scenarios.
This commit is contained in:
@@ -195,6 +195,7 @@ async def collect_once() -> None:
|
||||
except (OSError, SQLAlchemyError, asyncpg.PostgresError, Exception) as exc:
|
||||
now = datetime.now(timezone.utc)
|
||||
current_error = str(exc)
|
||||
error_class = exc.__class__.__name__
|
||||
state = _failure_state.get(target.id)
|
||||
if state is None:
|
||||
_failure_state[target.id] = {
|
||||
@@ -202,7 +203,13 @@ async def collect_once() -> None:
|
||||
"last_log_at": now,
|
||||
"error": current_error,
|
||||
}
|
||||
logger.exception("collector_error target=%s err=%s", target.id, exc)
|
||||
logger.warning(
|
||||
"collector_target_unreachable target=%s error_class=%s err=%s consecutive_failures=%s",
|
||||
target.id,
|
||||
error_class,
|
||||
current_error,
|
||||
1,
|
||||
)
|
||||
continue
|
||||
|
||||
count = int(state.get("count", 0)) + 1
|
||||
@@ -220,9 +227,10 @@ async def collect_once() -> None:
|
||||
if should_log:
|
||||
state["last_log_at"] = now
|
||||
state["error"] = current_error
|
||||
logger.error(
|
||||
"collector_error_throttled target=%s err=%s consecutive_failures=%s",
|
||||
logger.warning(
|
||||
"collector_target_unreachable target=%s error_class=%s err=%s consecutive_failures=%s",
|
||||
target.id,
|
||||
error_class,
|
||||
current_error,
|
||||
count,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user