De @ nblumhardt 's post :
Vous pouvez ensuite continuer et supprimer toute autre configuration de l'enregistreur qui traîne: il n'y a pas besoin d'une section "Journalisation" dans appsettings.json, pas AddLogging () n'importe où, et aucune configuration via ILoggerFactory dans Startup.cs.
Je reçois une exception lorsque using Serilog;
Et ILogger
dans mon contrôleur.
private readonly ILogger _logger;
public CustomersController(ILogger logger)
{
_logger = logger;
}
Résulte en:
Une exception non gérée s'est produite lors du traitement de la demande.
InvalidOperationException: impossible de résoudre le service pour le type 'Serilog.ILogger' lors de la tentative d'activation de 'Customers.Api.Controllers.CustomersController'.
Aurais-je encore besoin de fournir des informations à DI dans la méthode Startup.ConfigureServices()
?
Ma classe de programme, à ma connaissance, suit les instructions de la poste.
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog()
.Build();
}
Changer le type attendu de ILogger logger
à ILogger<CustomersController>
enregistreur:
private readonly ILogger _logger;
public CustomersController(ILogger<CustomersController> logger)
{
_logger = logger;
}
Si vous souhaitez toujours utiliser le propre ILogger
de Serilog plutôt que le ILogger<T>
D'ASP.NET Core, vous pouvez également enregistrer l'enregistreur Serilog avec votre conteneur IoC.
Il existe une intégration pour Autofac qui fait cela à https://github.com/nblumhardt/autofac-serilog-integration , d'autres conteneurs peuvent également avoir des packages d'intégration.