应用程序见解不适用于 Azure Functions 中的启动 DI

Application insights not working with startup DI in Azure Functions

我正在尝试将来自 Configure class 的消息记录到 Application Insights。虽然消息已正确记录在 运行 方法中,但我在哪里添加 polly,它不会将消息发送到 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;

    }
}

}

昨天有人 运行 创建了这个示例 - 看看是否有帮助:

https://github.com/Runamok81/AzureFunctionHttpClientFactoryPollyLogging

另一件需要注意的事情是,如果您现在生成自己的 ILogger 实例,则需要将其显式添加为 host.json 中的日志类别。我不知道这里是否是这种情况,因为您要求的是我认为应该添加的 Function1 实例,但是例如,我在这里创建了一个带有字符串“Startup”的实例:

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

所以我必须更新 host.json 以确保它包含此类型的 logLevel “Information”:

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

我现在可以将日志推送到 App Insights。我正在处理 github 问题,Here 它被告知我们需要在 host.json 中添加日志记录作为解决方法,以确保它覆盖预定义的配置。

这是我们需要在 host.json

中添加的配置
{
    "version": "2.0",
    "logging": {
        "logLevel": {
            "Default": "Information"
        }
    }
}