Wiki
猫Logging RU
English version: Logging
Это краткая русскоязычная версия страницы про логирование. Полная и наиболее актуальная страница: Logging.
Какие уровни логирования есть
У Laniakea обычно есть несколько уровней логирования:
- основной логгер бота;
- необязательный логгер запросов;
- логгеры плагинов;
- внутренние логгеры у
tgapi.APIиtgapi.Uploader.
Они нужны для разных задач:
- логгер бота покрывает жизненный цикл и маршрутизацию;
- логгер запросов пишет сырые обновления;
- логгеры плагинов помогают разделять логи по модулям;
- логгеры API/uploader полезны для низкоуровневой трассировки.
Основной логгер бота
Создается при NewBot(...).
Используется для:
- сообщений о запуске и остановке;
- предупреждений от фоновых задач и middleware;
- операционных логов уровня бота.
Получить можно через:
logger := bot.GetLogger()
Логгер запросов
Включается через BotOpts.UseRequestLogger.
Он логирует сырые обновления после успешного getUpdates.
Это особенно полезно для:
- отладки маршрутизации;
- изучения реальной формы Telegram updates;
- подготовки тестовых примеров.
Логгеры плагинов и ctx.Logger
У плагина может быть свой логгер.
Если он есть, в handler'е ctx.Logger обычно указывает именно на него.
Если нет, ctx.Logger переключается обратно на логгер бота.
Из-за этого внутри обработчиков чаще всего правильнее использовать именно ctx.Logger.
Debug mode
Bot.Debug(true) или BotOpts.Debug:
- поднимает уровень логирования;
- влияет на bot logger;
- влияет на логгер запросов;
- влияет на уже зарегистрированные логгеры плагинов.
Логирование в файл
Если включить:
WriteToFile- и при необходимости
LoggerBasePath
бот может писать:
main.logrequests.log
Если создание файлового логгера не удалось, бот не падает, а остается на логировании в stdout.
AddAppDataLoggerWriter(...)
Этот метод позволяет прикрепить writer, полученный из app data/shared context, сразу к нескольким уровням логирования.
Он добавляется в:
- логгер бота;
- логгер запросов;
- логгеры API/uploader;
- уже зарегистрированные логгеры плагинов.
Важно:
- сначала должен быть задан
SetAppData(...); - если хочешь, чтобы логгеры плагинов точно получили writer, вызывай метод после
AddPlugins(...).
Что читать дальше
Navigation
Start here
Runtime and Architecture
- Bot-Lifecycle
- Webhook-Runtime
- Middleware
- Runners
- Error-Handling
- Logging
- Update-Routing-Model
- Policies
- Scenes
Interaction and Telegram API
- Inline-Keyboards-and-Payloads
- Auto-Generated-Commands
- Drafts
- Rich-Messages
- Localization
- Rate-Limiting
- tgapi-Overview