Настройка логирования
import { Aside, Tabs, TabItem } from ‘@astrojs/starlight/components’;
Kodel.AI использует иерархическую систему логирования на базе pino. Уровни задаются в YAML-конфиге — без перекомпиляции.
Конфигурация
Section titled “Конфигурация”Секция logging в config.override.yaml (или config/default.yaml):
logging: default: info # уровень по умолчанию file: enabled: false # запись в файл path: logs/app.log levels: kodel: info # все сервисы сервера kodel.assistant: debug kodel.llm: warnПосле изменения нужен перезапуск сервера:
docker compose up -d --no-deps serverИерархия уровней
Section titled “Иерархия уровней”Принцип такой же, как в log4j/logback: более специфичный ключ переопределяет общий.
kodel: info└── kodel.assistant: debug ← все сервисы домена assistant получат DEBUG └── kodel.assistant.AssistantController: warn ← только этот сервис — WARNПоиск идёт от самого специфичного к общему:
kodel.assistant.AssistantService→ нетkodel.assistant→ debug ✓
Уровни логирования
Section titled “Уровни логирования”| Уровень | Значение |
|---|---|
fatal | Сервер не может продолжить работу |
error | Ошибка операции, требует внимания |
warn | Нештатная ситуация, работа продолжается |
info | Бизнес-события (по умолчанию) |
debug | Детали для отладки |
verbose | Подробный трейс каждого шага |
Домены
Section titled “Домены”Каждый модуль сервера логирует под своим доменом:
| Домен | Модули |
|---|---|
kodel.assistant | AI-ассистент, agent-debug |
kodel.llm | LLM вызовы и логи |
kodel.repo | Индексация репозиториев |
kodel.tasks | Задачи, workflow |
kodel.auth | Авторизация, организации |
kodel.infra | Инстансы, SSH-прокси |
kodel.ai | AI-jobs, step-action-engine |
Сценарии
Section titled “Сценарии”Включить DEBUG для одного модуля
Section titled “Включить DEBUG для одного модуля”logging: levels: kodel.assistant: debugВключить DEBUG для всего сервера
Section titled “Включить DEBUG для всего сервера”logging: default: debugЗаглушить шумный модуль
Section titled “Заглушить шумный модуль”logging: levels: kodel: info kodel.repo: warn # индексация слишком многословнаВключить запись в файл
Section titled “Включить запись в файл”logging: file: enabled: true path: logs/app.logФайл содержит JSON-строки (формат pino). Stdout продолжает выводить pretty-формат.
Формат вывода
Section titled “Формат вывода”stdout (pino-pretty, colorized):
[14:23:01.542] INFO: AssistantService Processing chat request for conversation abc123[14:23:01.891] DEBUG: LlmCallService Calling anthropic claude-sonnet-4-5 with 1240 tokens[14:23:03.210] INFO: AssistantService Chat complete, 3 tool calls executedФайл (raw JSON от pino):
{"level":30,"time":1744380181542,"context":"AssistantService","msg":"Processing chat request"}{"level":20,"time":1744380181891,"context":"LlmCallService","msg":"Calling anthropic..."}Переменная окружения
Section titled “Переменная окружения”Уровень по умолчанию можно задать через env (используется если секция logging не задана):
KODEL_LOGGING_DEFAULT=debug docker compose up -d server