Простой инжектор: зарегистрируйте ILogger <T> с помощью ILoggerFactory.CreateLogger <T> ()

Я работаю с проектом, который использует Simple Injector в качестве инжектора зависимости. С другой стороны, этот проект использует Microsoft.Extensions.Logging для регистрации событий, которые происходят в определенных классах.

Моя техническая проблема довольно проста для объяснения. Я хочу зарегистрировать в моем DI ILogger независимо от класса T, который вызывается, ноМне НУЖНО сделать это из моегоILoggerFactory.CreateLogger<T>() метод, потому что это получает конфигурацию регистратора с помощьюMicrosoft.Extensions.Configuration.

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

private Microsoft.Extensions.Logging.ILogger CreateLogger<T>()
{
     var factory = this.ResolveService<ILoggerFactory>();
     var logger = factory.CreateLogger<T>();
     return logger;
}

Я мог бы добиться инъекции, выполнив:

Container.Register(typeof(ILogger<>), typeof(Logger<>));

И это позволяет нам решить что-то вроде:

public class SomeApiController : ApiController
{
     public SomeApiController(ILogger<SomeApiController> logger)
     {
         //logger is well instantiated, but doesn't got the configuration
         logger.LogInformation("test log.");
     }
}

Но, как я уже сказал, это происходит без прохождения через конфигурацию, полученную изMicrosoft.Extensions.Logging.ILoggerFactory класс, так что это не полезно.

Есть ли способ зарегистрироватьсяILogger<T> используя мойCreateLogger<T>?

Ответы на вопрос(2)

Ваш ответ на вопрос