Я пытаюсь получить журнал для провайдера 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?