web-dev-qa-db-fra.com

Comment se connecter à un fichier sans utiliser d'enregistreur tiers dans .Net Core?

Comment se connecter à un fichier sans en utilisant un enregistreur tiers (serilog, elmah, etc.) dans . NET CORE?

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
}
25
cilerler

Aucun enregistreur de fichier n'est actuellement inclus dans la structure, mais en ajouter un est envisagé: http://github.com/aspnet/Logging/issues/441 . Ne hésitez pas à upvoter la question sur github.

19
Pawel

Le problème http://github.com/aspnet/Logging/issues/441 est fermé et MS recommande officiellement d'utiliser des enregistreurs de fichiers tiers. Vous voudrez peut-être éviter d'utiliser des infrastructures de journalisation lourdes telles que serilog, nlog, etc., car elles sont excessives au cas où vous auriez simplement besoin d'un enregistreur qui enregistre dans un fichier et rien de plus (sans dépendances supplémentaires).

J'ai fait face à la même situation et mis en œuvre un enregistreur de fichier simple (mais efficace): https://github.com/nreco/logging

  • peut être utilisé dans les applications .NET Core 1.x et .NET Core 2
  • prend en charge le gestionnaire de messages de journal personnalisé pour l'écriture de journaux au format JSON ou CSV
  • implémente la fonction '' fichier tournant '' si la taille maximale du fichier journal est spécifiée
8
Vitaliy Fedorchenko

.NET Core 2.0 2.1 est sorti, mais il ne fournit toujours pas d'implémentation ILoggerProvider pour la journalisation de fichiers.

Je recherchais une implémentation tierce viable et légère, mais je n'en ai trouvé aucune. J'ai donc décidé d'en écrire une qui couvre les fonctionnalités de la console intégrée ConsoleLogger . et fournit des fonctionnalités supplémentaires essentielles. Ma bibliothèque est gratuit, open-source et n'a que des dépendances de framework.

Il est complètement conforme aux implémentations du fournisseur Microsoft. L'utilisation est aussi simple que suit:

Install-Package Karambolo.Extensions.Logging.File

.NET Core 2.1:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging(lb =>
    {
        lb.AddConfiguration(Configuration.GetSection("Logging"));
        lb.AddFile(o => o.RootPath = AppContext.BaseDirectory);
    });
}

.NET Core 2.0:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging(lb =>
    {
        lb.AddConfiguration(Configuration.GetSection("Logging"));
        lb.AddFile(new FileLoggerContext(AppContext.BaseDirectory, "default.log"));
    });

    services.Configure<FileLoggerOptions>(Configuration.GetSection("Logging:File"));
}

.NET Core 1.1:

var context = new FileLoggerContext(AppContext.BaseDirectory, "default.log");
loggerFactory.AddFile(context, Configuration.GetSection("Logging:File"));

Pour plus de détails sur la configuration, voir le site du projet .

7
Adam Simon

Si vous utilisez IIS, vous pouvez activer et afficher les journaux stdout:

  1. Editez le fichier web.config.
  2. Définissez stdoutLogEnabled sur true.
  3. Modifiez le chemin stdoutLogFile pour qu'il pointe vers le dossier des journaux (par exemple, .\logs\stdout).
  4. Enregistrez le fichier.
  5. Faites une demande à l'application.
  6. Accédez au dossier logs. Recherchez et ouvrez le journal stdout le plus récent.

Pour plus d'informations sur la journalisation stdout, consultez la section Dépannage de ASP.NET Core sur IIS .

2
raky291

Depuis . Net core (2.2) ne l'implémente pas encore, il faut quand même utiliser un plugin tiers pour cela.

Si vous souhaitez consigner les erreurs, les avertissements, etc. dans un fichier txt dans un projet .Net Core API. Vous pouvez utiliser ce que j'ai utilisé dans mon projet, appelé Serilog .

et vous pouvez suivre le blog ci-dessous pour configurer Serilog sur votre projet.

http://anthonygiretti.com/2018/11/19/common-features-in-asp-net-core-2-1-webapi-logging/

0
dush88c