Аналитика приложений не работает при запуске DI в функциях Azure

Я пытаюсь записать сообщение из класса Configure в Application Insights. Хотя сообщения правильно регистрируются в методе Run, но там, где я добавляю опрос, он не отправляет сообщение в Appinsights.

// я могу записать сообщение отсюда.

[FunctionName("Function1")]
public async Task Run(string msg,
            ILogger log)
        {
            log.LogInformation("An error occurred.");
}

// Но не отсюда.

[assembly: FunctionsStartup(typeof(Startup))]
namespace TestFunc2
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.HTTPExtension();
        }
    }

public static class DependencyExtension
{
    public static IServiceCollection HTTPExtension(this IServiceCollection services)
    {
        services.AddHttpClient<Function1>("client", (provider, client) =>
        {
            var logger = provider.GetService<ILogger<Function1>>();
            logger.LogInformation("func2");
            logger.LogError("func2");
            client.BaseAddress = new Uri("http://www.ggl.com");
            client.DefaultRequestHeaders.Add("Accept", "application/json");
        });

        return services;

    }
}

}

2 ответа

Решение

Теперь я могу отправлять журналы в App Insights. У меня были проблемы с github. Здесь сообщается, что нам нужно добавить ведение журнала в host.json в качестве обходного пути, чтобы убедиться, что он переопределяет предопределенную конфигурацию.

Вот конфигурация, которую нам нужно добавить в host.json

{
    "version": "2.0",
    "logging": {
        "logLevel": {
            "Default": "Information"
        }
    }
}

Если бы кто-то вчера столкнулся с этим, кто создал этот образец - посмотрите, поможет ли это:

https://github.com/Runamok81/AzureFunctionHttpClientFactoryPollyLogging

Еще одна вещь, о которой следует знать, - если вы создаете свой собственный экземпляр ILogger, вам нужно явно добавить его как категорию журнала в host.json. Я не знаю, так ли это здесь, поскольку вы запрашиваете экземпляр Function1, который, как я полагаю, должен быть добавлен, но, например, здесь я создаю его со строкой "Startup":

https://github.com/jeffhollan/functions-csharp-sqlconnection/blob/b5f1d94e54db96112cbda0257e938e6c887c9310/functions-csharp-sqlconnection/Startup.cs

Поэтому мне пришлось обновить host.json чтобы убедиться, что он включает этот тип с logLevel "Информация":

https://github.com/jeffhollan/functions-csharp-sqlconnection/blob/b5f1d94e54db96112cbda0257e938e6c887c9310/functions-csharp-sqlconnection/host.json