REPOSITORY / ScuroNeko/Laniakea

Wiki

KNOWLEDGE REPOSITORY
3
Logging RU
ScuroNeko edited this page 2026-04-01 17:37:48 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.log
  • requests.log

Если создание файлового логгера не удалось, бот не падает, а остается на логировании в stdout.

AddAppDataLoggerWriter(...)

Этот метод позволяет прикрепить writer, полученный из app data/shared context, сразу к нескольким уровням логирования.

Он добавляется в:

  • логгер бота;
  • логгер запросов;
  • логгеры API/uploader;
  • уже зарегистрированные логгеры плагинов.

Важно:

  • сначала должен быть задан SetAppData(...);
  • если хочешь, чтобы логгеры плагинов точно получили writer, вызывай метод после AddPlugins(...).

Что читать дальше