Журналирование выполнения функции на Java
Сервис Cloud Functions автоматически захватывает потоки стандартного вывода приложения и отправляет их в централизованную систему журналирования в Yandex Cloud. Кроме журналов выполнения приложения, ведутся системные записи о событиях при выполнении запроса.
Для записи дополнительных сообщений используются стандартные языковые конструкции:
System.out.println
— выводит сообщение в стандартный поток выводаstdout
.System.err.println
— выводит сообщение в стандартный поток ошибокstderr
.Instant.now
+Duration.between
(и другие способы) — возвращает продолжительность выполнения действия.
Примечание
Многострочные сообщения должны быть разделены символом \r
(carriage return), но не \n
(line feed). При использовании последнего каждая строка отправляется отдельным сообщением и отображается в журнале отдельно.
Более подробно со спецификацией форматирования строк можно ознакомиться в документации Java
Системные сообщения
В рамках обработки каждого вызова в журнал также записываются системные сообщения START
, END
и REPORT
:
START RequestID: <идентификатор_запроса> Version: <идентификатор_версии_функции>
END RequestID: <идентификатор_запроса>
REPORT RequestID: <идентификатор_запроса>
Duration: 236.606 ms
Billed Duration: 300 ms
Memory Size: 128 MB
Max Memory Used: 22 MB
Queuing Duration: 0.027 ms
Function Init Duration: 225.298 ms
Все строки содержат идентификатор запроса (RequestID
), который генерируется автоматически в момент вызова функции.
Строка REPORT
— это отчет о выполнении функции. Она содержит дополнительную информацию о потребленных ресурсах:
Duration
– время, затраченное на вызов функции. Включает в себя параметрыQueuing Duration
иFunction Init Duration
.Billed Duration
– время, за которое взимается плата в соответствии с правилами тарификации.Memory Size
– объем памяти, указанный при создании версии, МБ.Max Memory Used
– объем использованной памяти на момент начала выполнения запроса.Queuing Duration
– время, которое запрос на выполнение провел во внутренней очереди. Если время растет, это может значить, что не хватает экземпляров функции. Максимальное количество экземпляров определяется квотами.Function Init Duration
– время, потраченное на инициализацию среды выполнения и загрузку кода функции.