Skip to content

Commit d82d5c5

Browse files
committed
feat: implement response size logging
Signed-off-by: ImMin5 <[email protected]>
1 parent ec68295 commit d82d5c5

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

src/spaceone/core/service/__init__.py

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import copy
22
import functools
3+
import json
34
import logging
45
import time
5-
from typing import Generator, Union, Literal
6+
from typing import Generator, Union, Literal, Any
67

78
from opentelemetry import trace
89
from opentelemetry.trace import format_trace_id
@@ -244,7 +245,10 @@ def _pipeline(
244245
if print_info_log:
245246

246247
process_time = time.time() - start_time
247-
_LOGGER.info(f"(RESPONSE) => SUCCESS (Time = {process_time:.2f}s)")
248+
response_size = _get_response_size(response_or_iterator)
249+
_LOGGER.info(
250+
f"(RESPONSE) => SUCCESS (Time = {process_time:.2f}s, Size = {response_size} bytes)",
251+
)
248252

249253
return response_or_iterator
250254

@@ -265,6 +269,23 @@ def _pipeline(
265269
delete_transaction()
266270

267271

272+
def _get_response_size(response_or_iterator: Any) -> int:
273+
try:
274+
print(type(response_or_iterator))
275+
if isinstance(response_or_iterator, dict):
276+
response_size = len(json.dumps(response_or_iterator, ensure_ascii=False))
277+
elif isinstance(response_or_iterator, (bytes, bytearray)):
278+
response_size = len(response_or_iterator)
279+
elif response_or_iterator is None:
280+
response_size = 0
281+
else:
282+
response_size = -1
283+
except Exception:
284+
response_size = -1
285+
286+
return response_size
287+
288+
268289
def _error_handler(
269290
error_type: _ERROR_TYPE,
270291
error: ERROR_BASE,

0 commit comments

Comments
 (0)