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();
}
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.
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
.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 .
Si vous utilisez IIS, vous pouvez activer et afficher les journaux stdout:
true
..\logs\stdout
).Pour plus d'informations sur la journalisation stdout, consultez la section Dépannage de ASP.NET Core sur IIS .
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/