Предотвращать.СЕТЬ от входа в консоль?

0

Вопрос

Я внедрил внедрение зависимостей в свое приложение. И я настраиваю службы следующим образом.

IConfiguration configuration = context.Configuration;

services.AddDbContext<ApplicationDbContext>(options =>
{
    options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});

services.ConfigureRailIncApi(configuration);

services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));

services.AddSingleton(configuration);
services.AddSingleton(Logger);

services.AddSingleton<Application>();
services.AddSingleton<ServiceManager>();

Все это работает нормально, за исключением того, что теперь платформа регистрируется в консоли, включая содержимое любых запросов, отправленных в базу данных.

Каким-то образом внутреннее ведение журнала было включено, но я не вижу, где я его включил.

Как я могу предотвратить .СЕТЬ от входа на экран?

Примечание: Logger является экземпляром моего собственного класса ведения журнала ConsoleLogger. Этот класс не реализует ILogger или используйте что-нибудь еще из .NET. Это просто пользовательский класс, который также входит в консоль и файл. Ведение журнала с помощью этого регистратора работает нормально. И я подтвердил это .Сетевые журналы не отправляются в этот класс.

Обновление:

Вот мой код, который настраивает хост.

public void Configure(string[] args, Action< HostBuilderContext, IServiceCollection> configureServices, Action<IHostBuilder> configureHost)
{
    IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

    hostBuilder.ConfigureServices((context, services) =>
    {
        services.AddSingleton(this);
        configureServices(context, services);
    });

    configureHost(hostBuilder);

    AppHost = hostBuilder.Build();
}

И вот код, который его вызывает.

ApplicationServices appServices = new();

appServices.Configure(args, (context, services) =>
{
    IConfiguration configuration = context.Configuration;

    services.AddDbContext<ApplicationDbContext>(options =>
    {
        options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
    });

    services.ConfigureRailIncApi(configuration);

    services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));

    services.AddSingleton(configuration);
    services.AddSingleton(Logger);

    services.AddSingleton<Application>();
    services.AddSingleton<ServiceManager>();
},
builder =>
{

});
.net-6.0 .net-core c# ilogger
2021-11-23 19:36:35
1

Лучший ответ

1

Примечание

То CreateDefaultBuilder метод:
...
...
Добавляет следующих поставщиков ведения журнала:

  • Приставка
  • Отлаживать
  • Источник событий
  • Журнал событий (только при работе в Windows)

Ссылка на настройки конструктора по умолчанию

Вам нужно будет явно удалить поставщиков по умолчанию и добавить только те, которые вы хотите.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

hostBuilder.ConfigureLogging(logging => {
    logging.ClearProviders();

    //... add my providers here
});

//...

Обратите внимание, что если вы хотите, чтобы другие расширения не добавляли своих собственных поставщиков, выполните настройку ведения журнала последним, чтобы вы были уверены в том, какие регистраторы были добавлены.

2021-11-23 20:41:50

Да, именно это и происходит. Я не уверен, почему ConfigureLogging предположил, что logging параметр имел тип HostBuilderContext но я смог заставить это быть ILoggingBuilder. Спасибо за вашу помощь.
Jonathan Wood

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................