Skip to content

ОтелЗаписьЛога ​

Запись лога (LogRecord) — объект, содержащий все поля одной записи лога.

Описание ​

ОтелЗаписьЛога реализует спецификацию OpenTelemetry LogRecord / ReadWriteLogRecord. Содержит: тело, серьезность, атрибуты, время, имя события, контекст трассировки, ресурс и scope.

После вызова Логгер.Записать() запись фиксируется (Зафиксировать()) и становится неизменяемой — все сеттеры превращаются в no-op.

Уважает лимиты атрибутов из ОтелЛимитыЗаписейЛога: атрибуты сверх лимита отбрасываются, длинные строковые значения усекаются.

Конструктор ​

ПараметрТипПо умолчаниюОписание
ЛимитыЗаписейЛогаОтелЛимитыЗаписейЛогаНеопределеноЛимиты записей лога (иначе 128 атрибутов, без ограничения длины)

Методы — Геттеры ​

Время ​

Возвращает время записи лога в наносекундах Unix epoch.

Возвращает: Строка


ВремяНаблюдения ​

Возвращает время наблюдения записи лога в наносекундах Unix epoch.

Возвращает: Строка


НомерСерьезности ​

Возвращает номер серьезности (SeverityNumber).

Возвращает: Число — 0 (SEVERITY_NUMBER_UNSPECIFIED), если серьезность не задана


ТекстСерьезности ​

Возвращает текст серьезности (SeverityText).

Возвращает: Строка — пустая строка, если серьезность не задана


Тело ​

Возвращает тело записи лога.

Возвращает: Строка


Атрибуты ​

Возвращает копию атрибутов записи лога. Изменение копии не меняет запись: атрибуты записываются через УстановитьАтрибут, который применяет лимиты ОтелЛимитыЗаписейЛога.

Возвращает: ОтелАтрибуты


ИдТрассировки ​

Возвращает идентификатор трассировки для корреляции.

Возвращает: Строка


ИдСпана ​

Возвращает идентификатор спана для корреляции.

Возвращает: Строка


ФлагиТрассировки ​

Возвращает флаги трассировки (TraceFlags).

Возвращает: Число


Ресурс ​

Возвращает ресурс, описывающий источник телеметрии.

Возвращает: ОтелРесурс


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

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

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


КоличествоОтброшенныхАтрибутов ​

Возвращает количество атрибутов, отброшенных из-за превышения лимита.

Возвращает: Число


ИмяСобытия ​

Возвращает имя события (EventName) по спецификации.

Возвращает: Строка


ИнформацияОбИсключении ​

Возвращает информацию об исключении (если установлена).

Возвращает: ИнформацияОбОшибке, Неопределено

Методы — Сеттеры (fluent API) ​

Все сеттеры возвращают ОтелЗаписьЛога (ЭтотОбъект) для цепочки вызовов. После Зафиксировать() становятся no-op.

УстановитьСерьезность ​

Устанавливает серьезность по номеру из ОтелСтепеньСерьезности. Если текст серьезности не задан явно через УстановитьТекстСерьезности, в ТекстСерьезности подставляется короткое имя номера.

ПараметрТипПо умолчаниюОписание
ЗначениеЧисло—Номер серьезности (см. ОтелСтепеньСерьезности)

УстановитьТекстСерьезности ​

Устанавливает произвольный текст серьезности независимо от номера. Явно заданный текст не заменяется последующими вызовами УстановитьСерьезность.

ПараметрТипПо умолчаниюОписание
ЗначениеСтрока—Текст серьезности

УстановитьТело ​

Устанавливает тело записи. Принимает строку, число, булево, массив или соответствие (AnyValue).

ПараметрТипПо умолчаниюОписание
ЗначениеПроизвольный—Содержимое лога

УстановитьАтрибут ​

Устанавливает атрибут записи лога. Уважает лимиты: атрибуты сверх лимита отбрасываются, строки длиннее лимита усекаются.

ПараметрТипПо умолчаниюОписание
КлючСтрока—Имя атрибута
ЗначениеПроизвольный—Значение атрибута

УдалитьАтрибут ​

Удаляет атрибут записи лога (ReadWriteLogRecord MUST поддерживать удаление).

ПараметрТипПо умолчаниюОписание
КлючСтрока—Имя атрибута

УстановитьКонтекстТрассировки ​

Устанавливает контекст трассировки для корреляции лога с трассировкой.

ПараметрТипПо умолчаниюОписание
НовыйИдТрассировкиСтрока—Идентификатор трассировки
НовыйИдСпанаСтрока—Идентификатор спана

УстановитьФлагиТрассировки ​

Устанавливает флаги трассировки.

ПараметрТипПо умолчаниюОписание
ФлагиЧисло—Флаги трассировки

УстановитьИмяСобытия ​

Устанавливает имя события (EventName) по спецификации.

ПараметрТипПо умолчаниюОписание
ЗначениеСтрока—Имя события

УстановитьВремя ​

Устанавливает время записи лога в наносекундах Unix epoch.

ПараметрТипПо умолчаниюОписание
ВремяНаносекундыСтрока—Время в наносекундах

УстановитьВремяНаблюдения ​

Устанавливает время наблюдения записи лога в наносекундах Unix epoch.

ПараметрТипПо умолчаниюОписание
ВремяНаносекундыСтрока—Время наблюдения в наносекундах

УстановитьИсключение ​

Устанавливает информацию об исключении. SDK автоматически извлечёт атрибуты exception.type, exception.message, exception.stacktrace. Атрибут, уже заданный в записи, SDK не перезаписывает.

exception.type — машинный код ошибки библиотеки errors (ДиагностикаОшибок.КодОшибки, в том числе через обертки ФабрикаОшибок.Обернуть и ФабрикаОшибок.ОбернутьКонтекстом). У нативной ошибки OneScript без кода тип определяет классификатор native-errors: numeric.division_by_zero, json.reader.not_open, network.connection.refused и т.п. У нераспознанной ошибки без кода атрибут не заполняется: по семантическим соглашениям он обязателен, только если нет exception.message. Если exception.type уже задан в записи, ошибка не классифицируется — классификация стоит порядка 1–2 мс.

exception.stacktrace — описание ошибки и стек вызовов OneScript, включая цепочку причин (Caused by:), в том же формате, что у события исключения спана (ОтелУтилиты.СтекВызововИсключения).

ПараметрТипПо умолчаниюОписание
ЗначениеИнформацияОбОшибке—Информация об исключении

Зафиксировать ​

Фиксирует запись лога, делая её неизменяемой. Автоматически вызывается в Логгер.Записать().

Внутренние методы ​

Экспортированы только для вызова из других модулей SDK (в OneScript нет внутренней видимости), приложению вызывать их не нужно:

  • УстановитьРесурс — устанавливает ресурс записи: логгер в Записать передаёт ресурс провайдера;
  • УстановитьОбластьИнструментирования — устанавливает область инструментирования записи: логгер в Записать передаёт свою область.

Пример ​

bsl
Запись = Логгер.СоздатьЗаписьЛога();
Запись
    .УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
    .УстановитьТело("Критическая ошибка обработки заказа")
    .УстановитьАтрибут("order.id", "12345")
    .УстановитьАтрибут("user.id", "42")
    .УстановитьИмяСобытия("order.failed");
Логгер.Записать(Запись);

// С исключением
Попытка
    ОбработатьЗаказ();
Исключение
    Запись = Логгер.СоздатьЗаписьЛога();
    Запись
        .УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
        .УстановитьТело("Ошибка обработки заказа")
        .УстановитьИсключение(ИнформацияОбОшибке());
    Логгер.Записать(Запись);
КонецПопытки;