Структурированные журналы с поиском
Передавайте журналы JSON с корреляцией запросов.
«Структурированные журналы с поиском» — бесплатный урок MCP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MCP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MCP Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Logs You Can Actually Use
Plain text logs read fine to a human but fight you at scale. Structured logs store each event as data, so machines can filter and search them fast. 🔎
Why JSON Wins
Emit each log line as a JSON object. Every field becomes searchable, so you can query by tool, status, or duration without fragile text parsing.
Anatomy of a Log Event
A good event carries a timestamp, a level, a message, and context fields. Together they tell you what happened, when, and why.
{"ts": "2026-01-01T10:00:00Z",
"level": "info",
"msg": "tool called",
"tool": "search"}Pick Sensible Levels
Use log levels with intent: debug for detail, info for normal flow, warning for trouble, error for failures. Levels let you turn noise up or down.
The Correlation ID
Give each request a unique correlation ID and stamp it on every log it produces. Now one search pulls the full story of a single call.
Generate an ID
A UUID makes a fine correlation ID: it is unique enough to never collide across requests.
import uuid
request_id = str(uuid.uuid4())
print(request_id)Log to stderr, Not stdout
Over stdio, stdout carries the MCP protocol itself. Always send logs to stderr so they never corrupt the JSON-RPC messages.
Python's logging Module
Python's built-in logging module gives you levels and handlers for free. Point a handler at stderr and you are halfway there.
import logging, sys
logging.basicConfig(stream=sys.stderr,
level=logging.INFO)
log = logging.getLogger("mcp")Add Fields, Not Strings
Resist stuffing values into the message text. Pass them as extra fields so each one stays its own searchable column later.
log.info("tool finished",
extra={"tool": "search",
"ms": 42})Never Log Secrets
Logs travel and persist, so redact tokens, keys, and personal data before writing them. A leaked secret in a log is a real breach. 🔒
Keep One Line Per Event
Write one JSON object per line. This line-delimited format is what log shippers and search tools expect to ingest cleanly.
Quick Check
One detail trips up many MCP authors.
Recap
You learned to log as searchable JSON: one event per line, useful levels, a correlation ID, redacted secrets, and output on stderr. 📋
Часто задаваемые вопросы
Урок «Структурированные журналы с поиском» бесплатный?
Да — полный текст урока «Структурированные журналы с поиском» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MCP Academy, подпишись на CoddyKit PRO. Курс MCP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Структурированные журналы с поиском»?
Передавайте журналы JSON с корреляцией запросов. Ты практикуешь MCP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать MCP Academy?
Предыдущий опыт не требуется. MCP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Структурированные журналы с поиском»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке MCP Academy?
Да. Каждый урок MCP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что измерять на сервере
- Структурированные журналы с поиском
- Трассировка вызова инструмента от начала до конца
- Оповещения о сбоях и злоупотреблениях