Как получить идентификатор операции приложения функции Azure в моем коде .netcore

#.net-core #azure-functions #azure-functions-core-tools

#.net-core #azure-функции #azure-functions-core-tools

Вопрос:

Я создал функциональное приложение Azure .netcore 2.0 для Linux. Могу ли я получить приведенный ниже идентификатор операции в своем коде. Для целей отслеживания нам это нужно. При регистрации исключения мы хотим также включить этот идентификатор операции в мой код .net core. введите описание изображения здесь

Комментарии:

1. AFAIK — идентификатор операции будет автоматически добавлен к исключениям из того же контекста операции. Application Insights уже позаботится об этом за вас. Если вы действительно хотите получить к нему доступ в любом случае для любой пользовательской телеметрии, которую вы хотите написать, вам следует посмотреть, как работают TelemetryInitializer и TelemetryProcessor. learn.microsoft.com/en-us/azure/azure-monitor/app /…

Ответ №1:

Я смог получить идентификатор вызова, добавив ExecutionContext к параметрам моей функции:

 public static class Function1
{
    [FunctionName("Function1")]
    public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log, ExecutionContext context)
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}
  

введите описание изображения здесь

Комментарии:

1. как нам создать наш собственный идентификатор вызова и отправить его из функции Azure в AI?

2. InvocationId from ExecutionContext — ЭТО НЕ то же самое, что operationId автоматически присваивается ILogger. Например: InvocationId=6b3be631-d3ad-4bfa-b70d-3c32c692bc0b , и operationId=849be655ea898b45a28c22a538e31723 . operationId может быть идентификатор GUID, но это другой идентификатор GUID и отформатирован без тире.

Ответ №2:

Похоже, это System.Diagnostics.Activity.Current?.RootId .

С этим связаны некоторые ошибки, см. https://github.com/Azure/azure-functions-host/issues/5014