ОтелЗаписьЛога
Запись лога (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 нет внутренней видимости), приложению вызывать их не нужно:
УстановитьРесурс— устанавливает ресурс записи: логгер вЗаписатьпередаёт ресурс провайдера;УстановитьОбластьИнструментирования— устанавливает область инструментирования записи: логгер вЗаписатьпередаёт свою область.
Пример
Запись = Логгер.СоздатьЗаписьЛога();
Запись
.УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
.УстановитьТело("Критическая ошибка обработки заказа")
.УстановитьАтрибут("order.id", "12345")
.УстановитьАтрибут("user.id", "42")
.УстановитьИмяСобытия("order.failed");
Логгер.Записать(Запись);
// С исключением
Попытка
ОбработатьЗаказ();
Исключение
Запись = Логгер.СоздатьЗаписьЛога();
Запись
.УстановитьСерьезность(ОтелСтепеньСерьезности.Error())
.УстановитьТело("Ошибка обработки заказа")
.УстановитьИсключение(ИнформацияОбОшибке());
Логгер.Записать(Запись);
КонецПопытки;