Некоторые журналы функций Azure отсутствуют в Application Insights

У нас возникли некоторые проблемы с журналированием после обновления одной из наших функций Azure (v4) до .NET 8 и изолированного рабочего процесса; Некоторые (не все) журналы уровня ошибок отображаются только в потоке журнала функций для «Журналов App Insights», а не в журналах трассировки Application Insights.

Обратите внимание, что выборка отключена (или должна быть отключена), см. Приложение-функция Azure не всегда отправляет журнал в аналитику приложения.

При локальном запуске приложения и подключении его к Application Insights все журналы отображаются при запросе трассировок.

Программа.cs:

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication()
    .ConfigureServices(services =>
    {
        // Other service configurations not included
        services.ConfigureFunctionsApplicationInsights();
        services.AddApplicationInsightsTelemetryWorkerService();
    })
    .ConfigureLogging(logging =>
    {
    logging.Services.Configure<LoggerFilterOptions>(options =>
    {
            var defaultRule = options.Rules.FirstOrDefault(rule =>
                  rule.ProviderName == "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider");
            if (defaultRule is not null)
            {
                options.Rules.Remove(defaultRule);
            }
        });
    })
    .Build();

host.Run();

хост.json:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Information",
      "<project-namespace>": "Information"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": false
      }
    }
  }
}

Изменить — добавлены снимки экрана потока журналов и журналов статистики приложений.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
127
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Некоторые (не все) журналы уровня ошибок отображаются только в потоке журнала функций для «Журналов App Insights», а не в журналах трассировки Application Insights.

Используя триггерную функцию Http со стеком среды выполнения .NET 8.0, можно изолировать получение всех типов журналов, включая журналы ошибок в аналитике приложений. проверьте приведенный ниже код и конфигурацию:

Код функции:

public class Function1
{
    private readonly ILogger<Function1> _logger;

    public Function1(ILogger<Function1> logger)
    {
        _logger = logger;
    }

    [Function("Function1")]
    public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
    {
        _logger.LogTrace("this is Trace log");
        _logger.LogDebug("this is Debug log");
        _logger.LogWarning("this is Warning log");
        _logger.LogError("this is Error log");
        _logger.LogInformation("C# HTTP trigger function processed a request.");
        return new OkObjectResult("Welcome to Azure Functions!");
    }
}

.cs проект:

<FrameworkReference Include = "Microsoft.AspNetCore.App" />
<PackageReference Include = "Microsoft.Azure.Functions.Worker" Version = "1.21.0" />
<PackageReference Include = "Microsoft.Azure.Functions.Worker.Extensions.Http" Version = "3.1.0" />
<PackageReference Include = "Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version = "1.2.0" />
<PackageReference Include = "Microsoft.Azure.Functions.Worker.Sdk" Version = "1.17.0" />
<PackageReference Include = "Microsoft.ApplicationInsights.WorkerService" Version = "2.22.0" />
<PackageReference Include = "Microsoft.Azure.Functions.Worker.ApplicationInsights" Version = "1.2.0" />

Программа.cs:

var host = new HostBuilder()
    .ConfigureFunctionsWebApplication()
    .ConfigureServices(services =>
    {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.ConfigureFunctionsApplicationInsights();
        services.Configure<LoggerFilterOptions>(options =>
        {
            LoggerFilterRule toRemove = options.Rules.FirstOrDefault(rule => rule.ProviderName
                == "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider");

            if (toRemove is not null)
            {
                options.Rules.Remove(toRemove);
            }
        });
    })
    .ConfigureAppConfiguration((hostContext, config) =>
    {
        config.AddJsonFile("host.json", optional: true);
    })
    .ConfigureLogging((hostingContext, logging) =>
    {
        logging.AddApplicationInsights(console =>
        {
            console.IncludeScopes = true;
        });

        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
    })
    .Build();

host.Run();

хозяин. json:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "default": "Trace"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"

      },
      "enableLiveMetricsFilters": true
    }
  }
}

Функция успешно выполнена в локальном режиме.

Выход:

  • Ниже приведены журналы трассировки в аналитике приложений.

Журнал просто скрывался как «Исключение» вместо журнала «Трассировка» :) Спасибо, что заставили меня проверить поиск транзакций!

lenamos 21.06.2024 16:26
Ответ принят как подходящий

Похоже, что Application Insights теперь (после обновления) улавливает ошибку как исключение, а не как трассировку — вероятно, поскольку одно из пользовательских измерений содержит исключение.

Спасибо @Pavan за то, что заставил меня проверить поиск транзакций!

Другие вопросы по теме

Похожие вопросы

Функции Azure не принимают значение в кодировке URL-адреса в качестве параметра запроса?
Azure SignalR: ни один из транспортных средств, поддерживаемых клиентом, не поддерживается сервером
Функции Azure + .NET8 (изолированный режим) + OIDC — как проверить токен доступа, полученный в заголовке каждого запроса к моей функции Azure?
Тестирование приложения-функции, запускаемой по времени, на портале Azure вручную завершается неудачно
«Функция Azure» с образом Docker не работает для «триггера Azure Cosmos DB»
Переопределить среду функций Azure в службе Azure Kubernetes
Az funcappPublish .net8 Изолированное нарушение настроек среды выполнения конфигурации Azure при синхронизации
Рабочие функции не найдены. Попробуйте сделать свои классы и методы заданий общедоступными (NODEJS v4)
Процессор концентратора событий Azure: веб-задание или AzureFunction?
Функции Azure, созданные в одном облачном местоположении, например на юге Индии, должны иметь возможность создать группу ресурсов в центральном месте США