Логирования
Начиная с версии 0.9.2, фреймворк поддерживает использование пользовательских логгеров на основе Microsoft.Extensions.Logging.abstraction , реализующих интерфейсы ILogger и ILoggerFactory.
Собственную реализацию логирования можно подключить к боту через ILoggerFactory, используя:
билдер бота;
либо DI-контейнер.
F.A.Q
Вопрос: Зачем передавать логгер внутрь бота напрямую, если его можно зарегистрировать через DI?
Ответ: Фреймворк использует логирование не только в ваших командах, но и внутри самого бота — для событий, фоновых задач и внутренних операций. Важно: если вы регистрируете ILogger<T> напрямую через DI, этот логгер подтянется только в ваших классах. Внутренние компоненты бота будут использовать дефолтный логгер.
Чтобы весь бот использовал ваш логгер, нужно зарегистрировать ILoggerFactory (или прокинуть фабрику через билдера). Тогда все внутренние сообщения, включая события бота, будут логироваться через вашу реализацию.
Пример подключения собственного логгера
⚠️ Важно: ILoggerFactory используется в "приоритетах разрешения компонентов".
ILoggerFactory, заданная через билдерILoggerFactory, полученная из DI-контейнераДефолтный логгер на основе событий.
Через DI-контейнер
// Регистрация собственной фабрики логгеров в DI
builder.Services.AddTransient<ILoggerFactory, PRLoggerEventsFactory>();Через билдер бота
Использование логгера
Для работы с логированием внутри фреймворка можно получить логгер напрямую из экземпляра бота.
Где T — тип, для которого создаётся логгер (используется как категория логирования).
Полученный логгер реализует интерфейс ILogger<T> из Microsoft.Extensions.Logging.Abstractions, поэтому с ним можно работать стандартным образом:
Last updated