Entity Framework Core: consultas de log para uma única instância de contexto db

Usando o EF Core (ou qualquer ORM para esse assunto), quero acompanhar o número de consultas que o ORM faz no banco de dados durante alguma operação no meu software.

Eu usei o SQLAlchemy no Python anteriormente e nessa pilha é fácil de configurar. Normalmente, tenho testes de unidade que afirmam o número de consultas feitas para um cenário em um banco de dados SQLite na memória.

Agora, quero fazer a mesma coisa usando o EF Core e observei oDocumentação de log.

No meu código de configuração de teste, faço como a documentação diz:

using (var db = new BloggingContext())
{
    var serviceProvider = db.GetInfrastructure<IServiceProvider>();
    var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
    loggerFactory.AddProvider(new MyLoggerProvider());
}

Mas encontro problemas que, suspeito, são os resultados a seguir (também dos documentos):

Você só precisa registrar o criador de logs com uma única instância de contexto. Após o registro, ele será usado para todas as outras instâncias do contexto no mesmo AppDomain.

Os problemas que vejo nos meus testes indicam que minha implementação do criador de logs é compartilhada em vários contextos (isso está de acordo com os documentos que os li). E como a) meu executor de testes executa testes em paralelo eb) todo o meu conjunto de testes cria centenas de contextos de banco de dados - ele não funciona muito bem.

Pergunta / questões:

O que eu quero é possível?I.e. posso registrar um criador de logs com um contexto de banco de dados que é usado apenas para essa instância de contexto de banco de dados?Existem outras maneiras de realizar o que estou tentando fazer?

questionAnswers(3)

yourAnswerToTheQuestion