ОтелПровайдерЛогирования
Провайдер логирования (LoggerProvider) — центральная точка управления логгерами и процессорами.
Описание
ОтелПровайдерЛогирования реализует спецификацию OpenTelemetry LoggerProvider. Хранит кэш логгеров по идентичности области (имя библиотеки, версия, адрес схемы и атрибуты scope) и делегирует записи логов цепочке процессоров. Все публичные методы потокобезопасны.
Рекомендуется создавать через ОтелПостроительПровайдераЛогирования.
Конструктор
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
НовыйРесурс | ОтелРесурс | Неопределено | Ресурс, описывающий источник телеметрии (по умолчанию пустой ОтелРесурс) |
Процессор | Произвольный | Неопределено | Процессор записей логов |
ЛимитыЗаписейЛога | ОтелЛимитыЗаписейЛога | Неопределено | Лимиты записей лога |
Методы
ПостроительЛоггера
Создаёт построитель логгера (LoggerBuilder).
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
Возвращает: ОтелПостроительЛоггера
ПолучитьЛоггер
Создаёт или возвращает из кэша логгер для указанной библиотеки. После Закрыть() возвращает рабочий no-op логгер.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ИмяБиблиотеки | Строка | — | Имя инструментирующей библиотеки |
ВерсияБиблиотеки | Строка | "" | Версия библиотеки |
АтрибутыОбласти | ОтелАтрибуты | Неопределено | Атрибуты InstrumentationScope |
АдресСхемы | Строка | "" | URL схемы телеметрии |
Возвращает: ОтелЛоггер
ДобавитьПроцессор
Добавляет процессор логов в цепочку.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
Процессор | Произвольный | — | Процессор логов: встроенный или свой, см. ИнтерфейсПроцессорЛогов |
Ресурс
Возвращает ресурс провайдера.
Возвращает: ОтелРесурс
СброситьБуфер
Принудительно отправляет все накопленные данные через процессоры. СброситьБуфер вызывается у каждого процессора, даже если предыдущий бросил исключение; все процессоры укладываются в общий срок — каждому передаётся оставшееся время.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 0 | Таймаут в миллисекундах (0 — без ограничения) |
Возвращает: ОтелРезультатЭкспорта — ошибка, если хотя бы один процессор сообщил о сбое или бросил исключение; иначе таймаут, если истёк срок или процессор сообщил о таймауте; иначе успех
Закрыть
Завершает работу провайдера (Shutdown). Закрыть вызывается у каждого процессора в пределах общего срока — даже после исключения в предыдущем и после истечения срока (тогда процессор получает 1 мс и завершается без ожидания). Идемпотентен: повторный вызов возвращает успех.
После закрытия ПолучитьЛоггер() возвращает no-op логгер, логгеры, полученные раньше, отбрасывают записи и возвращают Ложь из Включен, а ПринудительноВыгрузитьСРезультатом возвращает ошибку «Провайдер логирования закрыт».
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия — ошибка, если хотя бы один процессор вернул ошибку или бросил исключение (описания ошибок перечислены через ; ); иначе таймаут, если истёк срок или процессор сообщил о таймауте; иначе успех
ПринудительноВыгрузитьСРезультатом
Принудительно отправляет все данные и возвращает результат в формате OTel SDK.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ТаймаутМс | Число | 30000 | Таймаут операции в миллисекундах |
Возвращает: ОтелРезультатЗакрытия
СброситьБуферАсинхронно
Асинхронно сбрасывает буфер. Аналог Java SDK: CompletableResultCode forceFlush().
Возвращает: Обещание
ЗакрытьАсинхронно
Асинхронно завершает работу провайдера. Аналог Java SDK: CompletableResultCode shutdown().
Возвращает: Обещание
Внутренние методы
Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:
Процессор— композитный процессор (ОтелКомпозитныйПроцессорЛогов) с цепочкой процессоров провайдера: логгер передаёт ему записи и опрашивает его вВключен;ЛимитыЗаписейЛога— лимиты записей лога, заданные провайдеру (Неопределено, если не заданы): логгер передаёт их новой записи вСоздатьЗаписьЛога;Закрыт—Истинас начала первого вызоваЗакрыть, ещё до закрытия процессоров: по нему логгер отбрасывает записи закрытого провайдера.
Пример
Провайдер = Новый ОтелПостроительПровайдераЛогирования()
.УстановитьРесурс(Ресурс)
.ДобавитьПроцессор(Новый ОтелПростойПроцессорЛогов(Экспортер))
.Построить();
Логгер = Провайдер.ПолучитьЛоггер("мой-сервис", "1.0.0");
// После завершения работы
Провайдер.Закрыть();