Аналитика приложений не работает при запуске 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":
Поэтому мне пришлось обновить host.json
чтобы убедиться, что он включает этот тип с logLevel "Информация":