ILoggerFactory vs serviceCollection.AddLogging έναντι WebHostBuilder.ConfigureLogging

ILoggerFactory vs serviceCollection.AddLogging έναντι WebHostBuilder.ConfigureLogging

Το τρίτο χρησιμοποιεί ConfigureServices η οποία είναι μια δημόσια μέθοδος στο WebHostBuilder . Και το πρώτο χρησιμοποιεί ConfigureLogging που είναι ένα από τα IHostBuilder μέθοδος επέκτασης στο HostingHostBuilderExtensions .

Και οι δύο καλούν το IServiceCollection μέθοδος επέκτασης AddLogging στο LoggingServiceCollectionExtensions κάτω από το Microsoft.Extensions.Logging πακέτο. Το AddLogging μέθοδος προσπαθήστε πρώτα να προσθέσετε δύο singleton ILoggerFactory και ILogger<> και ένα αναρίθμητο LoggerFilterOptions . Στη συνέχεια, κάντε την ενέργεια για την καταγραφή (ILoggingBuilder ) που τελικά καλεί το AddProvider μέθοδος προσθήκης των παρόχων αρχείων καταγραφής που εφαρμόζονται από αυτούς τους παρόχους (Κονσόλα, Azure) και κλήσεις SetMinimumLevel για να προσθέσετε LoggerFilterOptions

Η δεύτερη μέθοδος προσθέτει απευθείας τους παρόχους αρχείων καταγραφής στο LoggerFactory . Και αυτοί οι πάροχοι καλούνται στο LoggerFactory όταν καλούνται μέθοδοι καταγραφής.

Όσον αφορά τις παραγγελίες, η δεύτερη και η τρίτη μέθοδος καλούνται με WebHostBuilder 's UseStartup<TStartup> μέθοδος.


Στο ASP.NET Core 3.x, το πρώτο παράδειγμα είναι τώρα η εγκεκριμένη επιλογή. Όπως εξηγείται από την τεκμηρίωση

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.ClearProviders();
            logging.AddConsole();
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Μια άλλη αλλαγή είναι ότι η εγγραφή αρχείων καταγραφής πριν από την ολοκλήρωση της ρύθμισης του κοντέινερ DI στη μέθοδο Startup.ConfigureServices δεν υποστηρίζεται πλέον:

  • Δεν υποστηρίζεται η εισαγωγή καταγραφικού στον κατασκευαστή εκκίνησης.
  • Η ένεση του καταγραφικού στην υπογραφή της μεθόδου Startup.ConfigureServices δεν υποστηρίζεται

Η καταγραφή κατά την κατασκευή του κεντρικού υπολογιστή δεν υποστηρίζεται επίσης (καθώς το κοντέινερ DI δεν έχει ακόμη ρυθμιστεί), η τεκμηρίωση συμβουλεύει να δημιουργήσετε ένα ξεχωριστό καταγραφικό για αυτήν την περίπτωση.