Как я могу использовать ILogger <T>из функции Azure Functions V2? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть несколько служб, которые изначально были предназначены для вызова из моего веб-приложения ASP.NET Core 2.1.У них есть зависимости, внедренные в их конструкторы с помощью пакета Microsoft.Extensions.DependencyInjection.У некоторых из них есть зависимость от регистратора ILogger.

public GroupService(ILogger<GroupService> logger)
{
    ...
}

Я строю сервис-провайдера внутри функции, чтобы они все еще могли работать должным образом, однако мне интересно, что мне следует делать с зависимостями регистратора.Функция Azure (V2) по умолчанию вставляет в нее ILogger, но ее нельзя использовать в контейнере DI для создания дополнительных регистраторов, которые требуются сервисам.

Существует ли LoggerFactory, зарегистрированный где-то "под прикрытием", к которому я могу получить доступ для использования в моем контейнере DI?Я думаю, что это позволило бы мне добавить дополнительные регистраторы, которые регистрируют в окне вывода функций, или я совершенно не понимаю, как будет работать регистрация в функции?

Мне просто нужно настроить новый LoggerFactory и сделать этот журналк экземпляру ApplicationInsights, используемому проектом функций?

1 Ответ

0 голосов
/ 01 марта 2019

Используя самую последнюю среду выполнения функции Azure , теперь вы можете заставить среду выполнения вводить ваши зависимости через конструкторы.

Теперь вы можете удалить статические ключевые слова из своей функции Azure и получить время выполнения.

Вот как это можно настроить:

[assembly: WebJobsStartup(typeof(StartUp))]

public class StartUp : IWebJobsStartup
{
    public void Configure(IWebJobsBuilder webJobsBuilder)
    {
        // Enables logging and sets the minimum level of logs.
        webJobsBuilder.Services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.SetMinimumLevel(LogLevel.Debug);
        });

        // Registers your services.
        webJobsBuilder.Services.AddTransient<IGroupService, GroupService>();
    }        
}
...