Skip to content

ОтелПровайдерЛогирования ​

Провайдер логирования (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 нет внутренней видимости), приложению вызывать их не нужно:

  • Процессор — композитный процессор (ОтелКомпозитныйПроцессорЛогов) с цепочкой процессоров провайдера: логгер передаёт ему записи и опрашивает его в Включен;
  • ЛимитыЗаписейЛога — лимиты записей лога, заданные провайдеру (Неопределено, если не заданы): логгер передаёт их новой записи в СоздатьЗаписьЛога;
  • Закрыт — Истина с начала первого вызова Закрыть, ещё до закрытия процессоров: по нему логгер отбрасывает записи закрытого провайдера.

Пример ​

bsl
Провайдер = Новый ОтелПостроительПровайдераЛогирования()
    .УстановитьРесурс(Ресурс)
    .ДобавитьПроцессор(Новый ОтелПростойПроцессорЛогов(Экспортер))
    .Построить();

Логгер = Провайдер.ПолучитьЛоггер("мой-сервис", "1.0.0");

// После завершения работы
Провайдер.Закрыть();