Skip to content

ОтелЛоггер ​

Логгер (Logger) — инструмент для создания и отправки записей лога.

Описание ​

ОтелЛоггер реализует спецификацию OpenTelemetry Logger API. Создаётся через ОтелПровайдерЛогирования. Логгер привязан к ОтелОбластьИнструментирования и делегирует записи цепочке процессоров провайдера.

Все публичные методы потокобезопасны.

Методы ​

СоздатьЗаписьЛога ​

Создаёт новую запись лога с лимитами из провайдера.

Возвращает: ОтелЗаписьЛога


Включен ​

Проверяет, включён ли логгер для заданных параметров.

Вызывать Включен необязательно: он не требуется перед Записать, которая сама отбрасывает запись без провайдера, после его закрытия и без процессоров. Включен процессоров Записать не опрашивает: запись получает ПриПоявлении каждого процессора. Включен — оптимизация, полезная, только когда построение записи дорогое — например, тело или атрибуты вычисляются по данным из базы: тогда можно сначала вызвать Включен и пропустить эту работу при Ложь. Дешёвую запись можно сразу передавать в Записать.

Важно: результат не постоянен и может меняться со временем (регистрация процессоров, закрытие провайдера): сохранённое значение может устареть.

ПараметрТипПо умолчаниюОписание
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст (иначе текущий контекст потока)
ОбластьИнструментированияОтелОбластьИнструментированияНеопределеноScope (иначе scope логгера)
СтепеньСерьезностиЧисло0Номер серьезности для фильтрации
ИмяСобытияСтрока""Имя события для фильтрации

Возвращает: Булево — Истина, если логгер может обрабатывать записи


Записать ​

Отправляет запись лога. Устанавливает scope, resource и trace context, затем передаёт запись процессору. После вызова запись становится неизменяемой (Зафиксировать()).

ПараметрТипПо умолчаниюОписание
ЗаписьЛогаОтелЗаписьЛога—Запись лога для отправки
КонтекстСоответствие, НеопределеноНеопределеноЯвный контекст для trace correlation

ОбластьИнструментирования ​

Возвращает область инструментирования логгера.

Возвращает: ОтелОбластьИнструментирования

Пример ​

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

// Дешёвая запись передаётся сразу, без Включен()
Запись = Логгер.СоздатьЗаписьЛога();
Запись
    .УстановитьСерьезность(ОтелСтепеньСерьезности.Info())
    .УстановитьТело("Операция завершена")
    .УстановитьАтрибут("user.id", "42");
Логгер.Записать(Запись);

// Включен() экономит дорогое построение записи
Если Логгер.Включен(, , ОтелСтепеньСерьезности.Debug()) Тогда
    Запись = Логгер.СоздатьЗаписьЛога();
    Запись
        .УстановитьСерьезность(ОтелСтепеньСерьезности.Debug())
        .УстановитьТело(ПостроитьОтчетОСостоянии()); // дорогое вычисление
    Логгер.Записать(Запись);
КонецЕсли;