Χρησιμοποιώντας το Microsoft.Extensions.logging μέσω του προηγούμενου συστήματος καταγραφής του MVVMCROSS προσφέρει πολλά οφέλη:
1. Ευελιξία και επεκτάσεις: Το Microsoft.Extensions.Logging παρέχει ένα στρώμα αφαίρεσης που επιτρέπει στους προγραμματιστές να χρησιμοποιούν διάφορους παρόχους καταγραφής όπως Serilog, NLOG ή Log4Net. Αυτή η ευελιξία σημαίνει ότι το πλαίσιο καταγραφής μπορεί εύκολα να αλλάξει ανάλογα με τις ανάγκες του έργου, χωρίς να αλλάξει ο υποκείμενος κώδικας. Αντίθετα, το προηγούμενο σύστημα της MVVMCROSS ήταν πιο άκαμπτο και απαιτούσε συγκεκριμένες εφαρμογές για διαφορετικούς παρόχους [1] [2].
2. Υποστήριξη έγχυσης εξάρτησης: Microsoft.Extensions.Logging Ενσωματώνεται καλά με πλαίσια έγχυσης εξάρτησης, καθιστώντας ευκολότερη την έγχυση καταγραφών σε τάξεις. Αυτό είναι ιδιαίτερα χρήσιμο για τη δοκιμή μονάδων, καθώς επιτρέπει τη δημιουργία ψεύτικων καταγραφικών για την επαλήθευση της συμπεριφοράς καταγραφής [7]. Το MVVMCross υποστηρίζει επίσης την ένεση εξάρτησης για την καταγραφή, αλλά η χρήση της Microsoft.Extensions.Logging παρέχει μια πιο τυποποιημένη προσέγγιση σε διαφορετικά πλαίσια [2].
3. ΣΥΝΤΗΡΗΣΗ ΚΑΙ ΚΟΙΝΟΤΗΤΑ: Το Microsoft.Extensions.Logging είναι ένα ευρέως υιοθετημένο και σταθερό API, υποστηριζόμενο από τη Microsoft και την ευρύτερη κοινότητα .NET. Αυτή η σταθερότητα διασφαλίζει ότι θα συνεχίσει να διατηρείται και να ενημερώνεται, παρέχοντας μακροπρόθεσμη αξιοπιστία για έργα [2] [9].
4. Απλοποιημένη διαμόρφωση: Με το Microsoft.Extensions.Logging, η διαμόρφωση μπορεί να διαχειρίζεται μέσω appsettings.json ή άλλα αρχεία διαμόρφωσης, τα οποία απλοποιούν τη διαδικασία εγκατάστασης σε σύγκριση με ορισμένα άλλα πλαίσια καταγραφής. Αυτό είναι ιδιαίτερα ευεργετικό όταν χρησιμοποιείτε παρόχους όπως το Serilog ή το NLOG, το οποίο μπορεί να διαμορφωθεί χρησιμοποιώντας το JSON [7].
5. Αποφυγή του Lock-in του προμηθευτή: Χρησιμοποιώντας ένα στρώμα αφαίρεσης όπως το Microsoft.Extensions.Logging, οι προγραμματιστές αποφεύγουν να δεσμεύσουν τον κώδικα τους σε ένα συγκεκριμένο πλαίσιο καταγραφής. Αυτό διευκολύνει την εναλλαγή μεταξύ διαφορετικών παρόχων καταγραφής χωρίς σημαντικές αλλαγές κώδικα, μειώνοντας το κλείδωμα του προμηθευτή και την αύξηση της ευελιξίας του έργου [9].
6. Επιμελητικότητα και απόδοση: Το Microsoft.Extensions.Logging έχει σχεδιαστεί για να χειρίζεται αποτελεσματικά τα σενάρια καταγραφής υψηλής απόδοσης. Υποστηρίζει ασύγχρονη καταγραφή και μπορεί να βελτιστοποιηθεί για διαφορετικά περιβάλλοντα, καθιστώντας την κατάλληλη για εφαρμογές μεγάλης κλίμακας [9].
Συνοπτικά, η Microsoft.Extensions.Logging προσφέρει μια ευέλικτη, κλιμακωτή και ευρέως υποστηριζόμενη λύση καταγραφής που ενσωματώνει καλά με την έγχυση εξάρτησης και διάφορους παρόχους καταγραφής, καθιστώντας την ανώτερη επιλογή σε σχέση με το προηγούμενο σύστημα καταγραφής της MVVMCross για πολλά σενάρια ανάπτυξης.
Αναφορές:[1] https://developer.vonage.com/en/blog/adaptive-library-logging-with-microsoft-extensions-logging-dr
[2] https://www.mvvmcross.com/documentation/fundamentals/logging-new
[3] https://stackoverflow.com/questions/46483019/logging-from-static-members-with-microsoft-extensions-logging
[4] https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/extensions-logging
[5] https://www.mvvmcross.com/documentation/upgrading/upgrade-to-mvvmcross-60
[6] https://stackoverflow.com/questions/42356802/how-does-microsoft-extensions-logging-work-for-full-net-framework
[7] https://stackoverflow.com/questions/58209076/microsoft-extensions-logging-vs-nlog
[8] https://stackoverflow.com/questions/68075159/mvvm-cross-logging-setup-class
[9] https://blog.stephencleary.com/2018/05/microsoft-extensions-logging-part-1-introduction.html
[10] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[11] https://www.reddit.com/r/dotnet/comments/142fs0y/serilog_vs_microsoft_logger_ilogger/
[12] https://github.com/mvvmcross/mvvmcross/issues/2936