Όταν γράφετε κωδικός υπολογιστή στο C #, είναι καλή ιδέα να συμπεριλάβετε τον κωδικό καταγραφής. Με αυτόν τον τρόπο, όταν κάτι πάει στραβά, ξέρετε από πού να αρχίσετε να ψάχνετε. Ο κόσμος της Java το κάνει εδώ και χρόνια. Μπορείτε να χρησιμοποιήσετε το log4net για το σκοπό αυτό. Είναι μέρος του Apache log4j 2, ενός δημοφιλούς πλαισίου καταγραφής ανοιχτού κώδικα.
Αυτό δεν είναι το μόνο πλαίσιο καταγραφής .NET. υπάρχουν πολλά. Ωστόσο, το Απάχης Το όνομα είναι αξιόπιστο και το αρχικό πλαίσιο καταγραφής Java υπάρχει εδώ και περισσότερα από 15 χρόνια.
Γιατί να χρησιμοποιήσετε ένα πλαίσιο καταγραφής Log4net;
Όταν μια εφαρμογή ή ένας διακομιστής διακόπτεται, αναρωτιέστε γιατί. Ήταν μια αποτυχία υλικού, κακόβουλο λογισμικό, ίσως μια επίθεση άρνησης υπηρεσίας ή κάποιος παράξενος συνδυασμός κλειδιών που καταφέρνει να παρακάμψει όλους τους ελέγχους κώδικα; Απλά δεν ξέρετε.
Πρέπει να μάθετε γιατί συνέβη ένα σφάλμα, ώστε να μπορεί να διορθωθεί. Με ενεργοποιημένη την καταγραφή, ενδέχεται να μπορείτε να δείτε γιατί συνέβη.
Ξεκινώντας
Κατεβάστε το αρχείο log4net από τον ιστότοπο του Apache log4net. Επαληθεύστε την ακεραιότητα των ληφθέντων αρχείων χρησιμοποιώντας την υπογραφή PGP ή MD5 αθροίσματα ελέγχου. Τα αθροίσματα ελέγχου δεν είναι τόσο ισχυροί δείκτες όσο η υπογραφή PGP.
Χρησιμοποιώντας το Log4net
Το Log4net υποστηρίζει επτά επίπεδα καταγραφής από κανένα σε όλα σε αυξανόμενη προτεραιότητα. Αυτά είναι:
- ΜΑΚΡΙΑ ΑΠΟ
- ΜΟΙΡΑΙΟΣ
- ΛΑΘΟΣ
- ΠΡΟΕΙΔΟΠΟΙΩ
- ΠΛΗΡΟΦΟΡΙΕΣ
- ΧΡΕΩΣΗ
- ΟΛΑ
Τα υψηλότερα επίπεδα περιλαμβάνουν όλα τα χαμηλότερα. Κατά τον εντοπισμό σφαλμάτων, τη χρήση ΧΡΕΩΣΗ δείχνει όλα, αλλά στην παραγωγή, μπορεί να σας ενδιαφέρει μόνο το FATAL. Αυτή η επιλογή μπορεί να γίνει σε επίπεδο στοιχείου μέσω προγραμματισμού ή σε ένα αρχείο XML Config.
Καταγραφείς και παραλήπτες
Για ευελιξία, το log4net χρησιμοποιεί καταγραφικά, προσαρτήματα και διατάξεις. Ένα καταγραφικό είναι ένα αντικείμενο που ελέγχει την καταγραφή και είναι μια εφαρμογή της διεπαφής ILog, η οποία καθορίζει πέντε δυαδικές μεθόδους: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled και IsFatalEnabled. Καθορίζει επίσης τις πέντε μεθόδους - Debug, Info, Warn, Error και Fatal - μαζί με υπερφορτώσεις και πέντε μορφοποιημένες εκδόσεις συμβολοσειρών. Μπορείτε να δείτε την πλήρη διεπαφή ILog στο ηλεκτρονικό εγχειρίδιο log4net.
Οι καταγραφείς αντιστοιχούν σε ένα από τα επίπεδα, αλλά όχι σε ΟΛΑ ή ΑΝΕΝΕΡΓΟ, μόνο τα άλλα πέντε.
Οι Appenders ελέγχουν πού πηγαίνει η καταγραφή. Μπορεί να είναι σε μια βάση δεδομένων, σε ένα buffer στη μνήμη, στην κονσόλα, σε έναν απομακρυσμένο κεντρικό υπολογιστή, σε ένα αρχείο κειμένου με κυλιόμενα αρχεία καταγραφής, το αρχείο καταγραφής συμβάντων των Windows ή ακόμη και μέσω email μέσω SMTP. Υπάρχουν συνολικά 22 προσαρτητές και μπορούν να συνδυαστούν έτσι ώστε να έχετε πολλές επιλογές. Οι προσαρτητές προσαρτώνται (εξ ου και το όνομα) σε έναν καταγραφέα.
Το Appenders φιλτράρει τα συμβάντα με αντιστοίχιση υποσυστημάτων, επίπεδο συμβάντος, εύρος επιπέδων και αρχή του ονόματος καταγραφικού.
Διατάξεις
Τέλος, υπάρχουν επτά διατάξεις που μπορούν να συσχετιστούν με ένα Appender. Αυτά ελέγχουν τον τρόπο καταγραφής του μηνύματος του συμβάντος και μπορούν να περιλαμβάνουν κείμενο εξαίρεσης, διατάξεις χρονικής σήμανσης και Στοιχεία XML.
Διαμόρφωση με XML
Αν και η διαμόρφωση μπορεί να γίνει μέσω προγραμματισμού, μπορεί επίσης να γίνει με αρχεία XML Config. Γιατί προτιμάτε τα αρχεία ρυθμίσεων σε σχέση με τις αλλαγές κώδικα; Απλό, είναι πολύ πιο εύκολο να έχεις έναν τύπο υποστήριξης να αλλάξει σε ένα αρχείο διαμόρφωσης από ότι πρέπει να κάνεις έναν προγραμματιστή να αλλάξει κώδικα, να δοκιμάσει και να αναδιατάξει μια νέα έκδοση. Έτσι, τα αρχεία διαμόρφωσης είναι ο τρόπος να πάτε. Η απλούστερη δυνατή διαδρομή είναι να προσθέσετε το App.config του έργου σας, όπως φαίνεται στο παρακάτω παράδειγμα:
Η ηλεκτρονική τεκμηρίωση log4net εξηγεί όλα τα πεδία του αρχείου διαμόρφωσης. Αφού ρυθμίσετε το App.config, προσθέστε χρησιμοποιώντας το log4net και αυτή τη γραμμή:
[συγκρότημα: log4net. Διαμόρφωση XmlConfigurator (Watch = true)]
Επιπλέον, ο πραγματικός καταγραφέας πρέπει να ληφθεί με μια κλήση στο LogManager. GetLogger (...). Το GetLogger καλείται συνήθως με το typeof (class) στο οποίο χρησιμοποιείται, αλλά αυτή η κλήση συνάρτησης ανακτά επίσης ότι:
Σύστημα. Αντανάκλαση. Βάση μεθόδου. GetCurrentMethod (). Τύπος δήλωσης
Αυτό το παράδειγμα δείχνει και τα δύο με ένα σχόλιο, ώστε να μπορείτε να επιλέξετε.
χρησιμοποιώντας log4net;
[συγκρότημα: log4net. Διαμόρφωση XmlConfigurator (Watch = true)]
namespace gvmake
{
Πρόγραμμα τάξης
{
ιδιωτικό στατικό αναγνωστικό ILog log = LogManager. GetLogger (Σύστημα. Αντανάκλαση. Βάση μεθόδου. GetCurrentMethod
(). Τύπος δήλωσης);
// ιδιωτικό στατικό αναγνωστικό ILog log = LogManager. GetLogger (typeof (Πρόγραμμα));
static void Main (συμβολοσειρά [] args)
{
κούτσουρο. Εντοπισμός σφαλμάτων ("Έναρξη εφαρμογής");
}
}
}