Prévenir .NET de se connecter à la console?

0

La question

J'ai mis en œuvre l'injection de dépendance dans mon application. Et je services de configuration comme suit.

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

Tout cela fonctionne très bien sauf que maintenant le cadre de la journalisation de la console, y compris le contenu de toutes les requêtes adressées à la base de données.

D'une certaine manière à l'intérieur de la journalisation a été activée, mais je ne vois pas où je l'ai activé.

Comment puis-je empêcher .NET de l'exploitation forestière à l'écran?

Note: Logger est une instance de ma classe de log ConsoleLogger. Cette classe ne comprend pas mettre en œuvre ILogger ou utiliser tout autre chose .NET. C'est simplement une classe personnalisée qui ouvre également à la console et un fichier. Enregistrement à partir de cet enregistreur fonctionne bien. Et j'ai confirmé l' .NET, les journaux ne sont pas envoyés à cette classe.

Mise à jour:

Voici mon code qui permet de configurer l'hôte.

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

Et voici le code qui l'appelle.

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

La meilleure réponse

1

Note

L' CreateDefaultBuilder méthode:
...
...
Ajoute la journalisation des fournisseurs:

  • Console
  • Debug
  • EventSource
  • Journal des événements (uniquement lors de l'exécution sur Windows)

Référence constructeur par Défaut des paramètres de

Vous devez supprimer explicitement les fournisseurs par défaut et ajouter seulement ceux que vous voulez.

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

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

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

//...

Notez que si vous voulez éviter d'autres extension ajoutant leurs propres fournisseurs, puis de réaliser la configuration de la journalisation dernier, de sorte que vous êtes sûr de l'enregistreurs ont été ajoutés.

2021-11-23 20:41:50

Oui, c'est exactement ce qui se passe. Je ne sais pas pourquoi ConfigureLogging supposé l' logging le paramètre de type HostBuilderContext mais j'ai été capable de le forcer à être ILoggingBuilder. Merci pour votre aide.
Jonathan Wood

Dans d'autres langues

Cette page est dans d'autres langues

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