feat: add comprehensive logging for API requests and responses

This commit is contained in:
root 2026-03-29 22:09:10 +00:00
parent ed86ad63b1
commit e64d1f8346
2 changed files with 32 additions and 0 deletions

View File

@ -248,6 +248,9 @@ class KworkClient:
"l_remember_me": "1", "l_remember_me": "1",
} }
logger.info(f"Login request: POST https://kwork.ru/api/user/login (user: {username})")
logger.debug(f"Login payload: {login_data}")
response = await http_client.post( response = await http_client.post(
"https://kwork.ru/api/user/login", "https://kwork.ru/api/user/login",
json=login_data, json=login_data,
@ -261,12 +264,20 @@ class KworkClient:
}, },
) )
logger.debug(f"Login response status: {response.status_code}")
logger.debug(f"Login response headers: {dict(response.headers)}")
if response.status_code != 200: if response.status_code != 200:
logger.error(f"Login failed with status {response.status_code}: {response.text[:200]}")
raise KworkAuthError(f"Login failed: {response.status_code}") raise KworkAuthError(f"Login failed: {response.status_code}")
response_data = response.json() response_data = response.json()
cookies = dict(response.cookies) cookies = dict(response.cookies)
logger.info(f"Login successful: user_id={cookies.get('userId')}, csrf_token={response_data.get('csrftoken', 'N/A')[:20] if response_data.get('csrftoken') else 'N/A'}")
logger.debug(f"Login response data: {response_data}")
logger.debug(f"Login cookies: {list(cookies.keys())}")
# Debug: print response for troubleshooting # Debug: print response for troubleshooting
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -405,10 +416,31 @@ class KworkClient:
""" """
http_client = self._get_httpx_client() http_client = self._get_httpx_client()
# Log request
full_url = f"{self.base_url}{endpoint}" if not endpoint.startswith("http") else endpoint
logger.debug(f"API Request: {method} {full_url}")
logger.debug(f"Request kwargs: {kwargs}")
try: try:
response = await http_client.request(method, endpoint, **kwargs) response = await http_client.request(method, endpoint, **kwargs)
# Log response
logger.debug(f"API Response: {response.status_code} {response.reason_phrase}")
logger.debug(f"Response headers: {dict(response.headers)}")
# Log response body (truncated for large responses)
try:
response_text = response.text
if len(response_text) > 500:
logger.debug(f"Response body (truncated): {response_text[:500]}...")
else:
logger.debug(f"Response body: {response_text}")
except Exception:
logger.debug("Response body: <not available>")
return self._handle_response(response) return self._handle_response(response)
except httpx.RequestError as e: except httpx.RequestError as e:
logger.error(f"Network error for {method} {full_url}: {e}")
raise KworkNetworkError(f"Request failed: {e}") from e raise KworkNetworkError(f"Request failed: {e}") from e
# ========== Catalog Endpoints ========== # ========== Catalog Endpoints ==========