Добавил форматирование вывода логов

This commit is contained in:
2026-04-30 08:05:33 +03:00
parent b2f0716a3b
commit fc4aeebfca
2 changed files with 48 additions and 2 deletions
+40 -2
View File
@@ -19,14 +19,16 @@ def _trace_record(
row_id: int,
level: str,
message: str,
step: str = "process",
status: str = "failed",
attrs_json: object | None = None,
) -> TraceLogRecord:
return TraceLogRecord(
id=row_id,
trace_id="trace-1",
event_time=datetime(2026, 4, 28, 10, 11, 12, tzinfo=timezone.utc),
step="process",
status="failed",
step=step,
status=status,
level=level, # type: ignore[arg-type]
message=message,
attrs_json=attrs_json if attrs_json is not None else {},
@@ -73,6 +75,7 @@ def test_trace_endpoint_returns_text_with_default_levels() -> None:
" - child-1\n"
" - child-2\n"
"--------------------------------------------------\n"
"step: process\n"
"first error\n"
"second warning"
)
@@ -102,10 +105,45 @@ def test_trace_endpoint_appends_attrs_json_in_text_mode() -> None:
"parent_id: \n"
"child_ids:\n"
"--------------------------------------------------\n"
"step: process\n"
'failure, {"attempt":2,"source":"crm"}'
)
def test_trace_endpoint_separates_messages_by_step_in_text_mode() -> None:
async def trace_provider(_trace_id: str, _request: TraceQueryRequest) -> TraceLogView:
return TraceLogView(
trace_id="trace-1",
parent_id=None,
child_ids=(),
records=(
_trace_record(row_id=1, level="INFO", message="load first", step="load_stocks"),
_trace_record(row_id=2, level="INFO", message="load second", step="load_stocks"),
_trace_record(row_id=3, level="INFO", message="filter first", step="filter_stocks"),
),
)
client = _build_client(trace_provider)
try:
response = client.get("/traces/trace-1")
finally:
client.close()
assert response.status_code == 200
assert response.text == (
"trace_id: trace-1\n"
"parent_id: \n"
"child_ids:\n"
"--------------------------------------------------\n"
"step: load_stocks\n"
"load first\n"
"load second\n"
"--------------------------------------------------\n"
"step: filter_stocks\n"
"filter first"
)
def test_trace_endpoint_returns_json_payload() -> None:
async def trace_provider(_trace_id: str, _request: TraceQueryRequest) -> TraceLogView:
return TraceLogView(