Skip to content

Подсчитываемый

Аннотация для автоматического подсчёта вызовов методов (аналог @Counted из Spring Boot).

Синтаксис

bsl
&Подсчитываемый[(Значение)]
Функция ИмяМетода(...) Экспорт
    ...
КонецФункции

Параметры

Значение

Тип: Строка (опционально)

Имя метрики. Должно соответствовать формату OTel (ASCII, точки как разделители). Если не указано, используется "ИмяЖелудя.ИмяМетода.counted" с автоматической транслитерацией кириллицы.

Описание

Аннотация &Подсчитываемый оборачивает метод в декоратор, который:

  1. Инкрементирует счётчик OTel при каждом вызове метода
  2. Устанавливает атрибут result = "success" при успешном выполнении
  3. При исключении устанавливает result = "failure" и записывает exception

Атрибуты счётчика: code.function.name, code.namespace, result, exception (при ошибке).

При размещении на конструкторе (вместе с &Желудь) инструментируются все экспортные методы желудя, в том числе те, которых нет в его модуле: напильник рефлексирует по самому экземпляру, а не по типу. К моменту обработки желудь обычно уже обёрнут декоратором — хранилищем сущностей autumn-data, построителем наследника из extends, декоратором предыдущего напильника, — и методов у экземпляра больше, чем объявлено в модуле типа.

Аннотации на методах читаются оттуда же, поэтому &Подсчитываемый на методе, пришедшем с декоратором, задаёт имя метрики так же, как на методе самого желудя. Такой метод считается и тогда, когда на конструкторе аннотации нет вовсе.

Примеры

Инструментация одного метода

bsl
&Подсчитываемый("api.requests")
Функция ОбработатьЗапрос(Запрос) Экспорт
    Возврат СформироватьОтвет(Запрос);
КонецФункции

Инструментация всех методов класса

bsl
&Желудь
&Подсчитываемый
Процедура ПриСозданииОбъекта()
КонецПроцедуры

Комбинирование с другими аннотациями

bsl
&Наблюдаемый("orders.process")
&Подсчитываемый("orders.count")
&Замеряемый("orders.duration")
Функция ОбработатьЗаказ(ИдЗаказа) Экспорт
    Возврат СформироватьОтвет(ИдЗаказа);
КонецФункции

См. также