Evitar .Rede de log para o console?

0

Pergunta

Eu tenho implementado injeção de dependência em meu aplicativo. E eu configuração de serviços como a seguir.

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>();

Isso tudo funciona bem, exceto agora, o quadro é de log para o console, incluindo o conteúdo de todas as consultas enviadas ao banco de dados.

De alguma forma, o interno foi activado o registo mas não estou a ver onde eu já habilitado.

Como posso evitar .LÍQUIDO a partir do registro para a tela?

Nota: Logger é uma instância de meu próprio log de classe ConsoleLogger. Esta classe não implementa ILogger ou usar mais nada .LÍQUIDA. É simplesmente uma classe personalizada que também logs para a consola e um arquivo. O registo de esse agente está funcionando bem. E eu já confirmou a .NET logs não estão sendo enviados para esta classe.

Atualização:

Aqui está o meu código que configura o host.

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();
}

E aqui está o código que o chamou.

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

Melhor resposta

1

Nota

O CreateDefaultBuilder método:
...
...
Adiciona o seguinte registo de fornecedores:

  • Console
  • Depuração
  • EventSource
  • O registo de eventos (somente quando em execução no Windows)

Referência Padrão builder definições

Você precisará remover explicitamente o padrão fornecedores e adicionar apenas os que você deseja.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

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

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

//...

Observe que, se você quiser evitar outra extensão adicionando seus próprios fornecedores, em seguida, executar a configuração de log última, de modo a que você for certo sobre o que madeireiros foram adicionados.

2021-11-23 20:41:50

Sim, é exatamente isso que está acontecendo. Eu não sei por que ConfigureLogging assumiu o logging parâmetro foi do tipo HostBuilderContext mas eu era capaz de forçá-lo a ser ILoggingBuilder. Obrigado por sua ajuda.
Jonathan Wood

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................