Регистрация CosmosDb Entity Framework Core провайдера - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь получить журнал для провайдера CosmosDb Entity Framework Core, чтобы увидеть выполняемые запросы. Я также хочу измерить блоки запросов по производительности для локального эмулятора. Не используя EF Core, есть ответ от CosmosDbClient, но в этом конкретном случае c я хочу использовать провайдера EF Core CosmosDb.

Глядя на https://dotnetfalcon.com/entity-framework-core-cosmos-db-provider/ кажется возможным , но ведение журнала таким способом устарело и даже не компилируется. NET Core 3.1

Также с учетом источника реализован IDiagnisticsLogger для DbLoggerCategory.Database.Command https://github.com/aspnet/EntityFrameworkCore/blob/9abd61d3fb4cdd1041f25fe2e10c70ee3dc4055e/src/EFCore.Cosmos/Diagnostics/Internal/CosmosLoggerExtensions.cs

Я попробовал следующее в Startup.cs, но, к сожалению, в консоли не напечатано ни одного запроса.

public void ConfigureServices(IServiceCollection services)
{
    _applicationOptions = GetApplicationOptions(services);

    services.AddDbContext<MyDbContext>(options =>
    {
        options.UseCosmos(_applicationOptions.AccountEndpoint, _applicationOptions.AccountKey, "MySecretDb");
        options.UseLoggerFactory(GetLoggerFactory());
    });

    ...
}

private ILoggerFactory GetLoggerFactory()
{
    IServiceCollection serviceCollection = new ServiceCollection();
    if (Environment.IsDevelopment())
    {
        serviceCollection.AddLogging(builder =>
            builder.AddConsole()
                .AddFilter(DbLoggerCategory.Database.Command.Name, Microsoft.Extensions.Logging.LogLevel.Debug));
    }
    return serviceCollection.BuildServiceProvider()
        .GetService<ILoggerFactory>();
}

Конфигурация кода работает

Используйте конфигурацию регистрации хоста, она работает без кода выше, но я скорее настраиваю его в Startup.cs или в appsettings. {Env}. json

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
            {
                logging.AddFilter(DbLoggerCategory.Database.Command.Name, LogLevel.Debug);
                logging.AddConsole();
            })

Раздел ведения журнала в Конфигурация не работает

Я пробовал это в моей разработке json, которая должна работать, но почему-то не работает

{
  "Logging": {
    "Console": {
      "IncludedScopes": true,
      "LogLevel": {
        "Microsoft.EntityFrameworkCore.Database.Command": "Debug"
      },
      "Default": "Information"
    },
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

Как заставить это работать, используя CreateDefaultBinder который принимает appsettings. {ru v}. json?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...