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

Μπορείτε να χρησιμοποιήσετε την καταγραφή σε διάφορα επίπεδα των εφαρμογών σας για σφάλματα, προειδοποιήσεις, εντοπισμό σφαλμάτων και άλλα.

Σύνδεση Go

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

ο κούτσουρο Το πακέτο δεν παρέχει λειτουργικότητα για δομημένα αρχεία καταγραφής. Τα πακέτα δομημένης καταγραφής παρέχουν λειτουργικότητα που απλοποιεί και βελτιώνει τη διαδικασία καταγραφής. Το οικοσύστημα Go φιλοξενεί πολλά τέτοια πακέτα.

instagram viewer

1. Zap από την Uber

Ζαπ είναι ένα γρήγορο, δομημένο, ισοπεδωμένο πακέτο καταγραφής που δημιουργήθηκε από την ομάδα ανοιχτού κώδικα της Uber για τη σύνταξη αρχείων καταγραφής στο Go. Uber κατασκεύασε το πακέτο Zap για να παρέχει πιο αποδοτική καταγραφή από άλλα πακέτα στο οικοσύστημα Go, συμπεριλαμβανομένου του κούτσουρο πακέτο.

Υπάρχουν δύο διακριτοί καταγραφείς στο πακέτο Zap. ο Κόπτων δέντρα διά ξυλείαν λειτουργία χειρίζεται κρίσιμες περιπτώσεις απόδοσης. ο SugaredLogger προσφέρει μεγαλύτερη ευελιξία με το API σε στιλ printf, αλλά συνοδεύεται από μια μικρή αντιστάθμιση στην απόδοση. Ακόμη και το πιο αργό πακέτο SugaredLogger είναι 4-10 φορές πιο γρήγορο από άλλα πακέτα δομημένης καταγραφής.

Εκτελέστε τα ακόλουθα σε μια γραμμή εντολών για να εγκαταστήσετε το πακέτο Zap:

πηγαίνω παίρνω -u πηγαίνω.uber.org/zap

Θα χρειαστείτε μια πρόσφατη έκδοση του Go για να εγκαταστήσετε και να χρησιμοποιήσετε με επιτυχία τη λειτουργικότητα του πακέτου Zap.

καταγραφέας, λάθος := zap. NewProduction() // παράδειγμα καταγραφικού zap

αν λάθος!= μηδέν {
fmt. Println (λάθ. Λάθος())
}

αναβάλλω κόπτων δέντρα διά ξυλείαν. Συγχρονισμός() // ξεπλένει buffers, εάν υπάρχουν
ζάχαρη := ξυλοκόπος. Ζάχαρη() //ζαχαρωμένος καταγραφέας εδώ

ζάχαρη. Infow("απέτυχε η ανάκτηση διεύθυνσης URL",
// Δομημένο περιβάλλον ως ζεύγη κλειδιού-τιμής με χαλαρή πληκτρολόγηση.
"url", url,
"απόπειρα", 3,
«πίσω», χρόνος. Δεύτερος,
)

ζάχαρη. Infof("Αποτυχία λήψης διεύθυνσης URL: %s", URL) // χρησιμοποιώντας τον μορφοποιητή στυλ printf

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

ο Πληροφορίες μέθοδος γράφει στην έξοδο, και το Πληροφορίες είναι η έκδοση μορφοποίησης του Πληροφορίες μέθοδος.

2. Το πακέτο Logrus

Logrus είναι ένα δομημένο πακέτο καταγραφής για εφαρμογές Go. Το Logrus είναι συμβατό με το τυπικό καταγραφικό βιβλιοθήκης, με παρόμοια λειτουργικότητα. Εάν έχετε εμπειρία στη χρήση του κούτσουρο πακέτο, θα βρείτε μια σουίτα που συνεργάζεται με το Logrus.

Το Logrus δεν υποστηρίζει τη μορφοποίηση JSON από προεπιλογή. Αλλά μπορείτε πάντα να χρησιμοποιήσετε μια βιβλιοθήκη JSON όπως η ενσωματωμένη json πακέτο με Logrus' SetFormatter μέθοδος.

Το Logrus υποστηρίζει την καταγραφή σε διαφορετικά επίπεδα και, αν και δεν είναι τόσο αποτελεσματικό όσο τα περισσότερα πακέτα καταγραφής, είναι πλούσιο σε χαρακτηριστικά και ασφαλές.

Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή για να εγκαταστήσετε το Logrus στον κατάλογο εργασίας σας:

πηγαίνω λάβετε το github.com/sirupsen/logrus

Ακολουθεί ένα παράδειγμα καταγραφής με το πακέτο Logrus.

εισαγωγή (
"os"
αρχείο καταγραφής "github.com/sirupsen/logrus" // ψευδώνυμο εισαγωγή
)

funcκύριος {
κούτσουρο. SetFormatter(&log. JSONFormatter{}) // ορίστε τον μορφοποιητή σε JSON
κούτσουρο. SetOutput (os. Stdout) // έξοδος σε τυπική έξοδο
κούτσουρο. SetLevel (καταγραφή. WarnLevel) // ορίστε επίπεδο προειδοποίησης

κούτσουρο. WithFields (καταγραφή. Πεδία{
"Όνομα": "John Doe",
"Ηλικία": 40,
}).Πληροφορίες ("Βιολογικά δεδομένα του John")
}

Αυτός ο κώδικας εισάγει τη βιβλιοθήκη Logrus και δημιουργεί ένα ψευδώνυμο για αυτήν με το όνομα κούτσουρο. Στο κύριος λειτουργία, καλεί το SetFormatter μέθοδος για να ορίσετε έναν μορφοποιητή για τα αρχεία καταγραφής. Μπορείτε να χρησιμοποιήσετε το SetOutput μέθοδος για να καθορίσετε πού πρέπει να πηγαίνουν τα μηνύματα καταγραφής. σε αυτή την περίπτωση, τυπική έξοδος.

ο SetLevel μέθοδος καταγράφει προειδοποιήσεις στο καθορισμένο επίπεδο ή παραπάνω.

3. Πακέτο ZeroLog

ZeroLog είναι μια εμπνευσμένη από το Zap, γρήγορη, βιβλιοθήκη αφιερωμένη στο JSON για καταγραφή, σχεδιασμένη για απόδοση. Χρησιμοποιεί ένα μοναδικό API αλυσίδας που επιτρέπει στη Zerolog να γράφει JSON και να καταγράφει συμβάντα χωρίς εκχωρήσεις και αντανακλάσεις.

Η Zerolog στοχεύει να παρέχει ένα πιο εύχρηστο API και υψηλότερη απόδοση, διατηρώντας παράλληλα τη βάση κώδικα και το API απλά. Επικεντρώνεται στη δομημένη καταγραφή και μπορείτε να χρησιμοποιήσετε το ConsoleWriter μέθοδος για όμορφη σύνδεση στην κονσόλα σας.

Υπάρχει χαμηλή κατανομή, ισοπεδωμένη καταγραφή, δειγματοληψία, άγκιστρα, πεδία με βάση τα συμφραζόμενα και καταγραφή σφαλμάτων με προαιρετικές δυνατότητες ανίχνευσης στοίβας στο πακέτο Zerolog. Μπορείτε επίσης να ενσωματώσετε το Zerolog με το συμφραζόμενα και http πακέτα.

Εκτελέστε αυτήν την εντολή στο τερματικό του χώρου εργασίας σας για να εγκαταστήσετε το Zerolog πακέτο.

πηγαίνω get -u [github.com/rs/zerolog/log](http://github.com/rs/zerolog/log)

Ακολουθεί ένα απλό παράδειγμα χρήσης του πακέτου Zerolog για μια απλή λειτουργία.

εισαγωγή (
"github.com/rs/zerolog" // zerolog για ρυθμίσεις
"github.com/rs/zerolog/log" // αρχείο καταγραφής για καταγραφή
)

funcκύριος() {
// Ο χρόνος UNIX είναι ταχύτερος και μικρότερος από τις περισσότερες χρονικές σημάνσεις
zerolog. TimeFieldFormat = μηδενικό. TimeFormatUnix

κούτσουρο. Εκτύπωση ("γεια κόσμο")
}

ο Μορφή πεδίου χρόνου η επιλογή ορίζεται στη μορφή ώρας Unix και η Τυπώνω Η εντολή γράφει το όρισμα κειμένου στην τυπική έξοδο.

4. Το πακέτο Log15

ο Ημερολόγιο15 Το πακέτο είναι μια απλή εργαλειοθήκη με γνώμες για καταγραφή αναγνώσιμη από τον άνθρωπο και τη μηχανή με βέλτιστες πρακτικές στο Go. Το Log15 μοντελοποιεί το io και http πακέτα από την τυπική βιβλιοθήκη Go ως εναλλακτική της ενσωματωμένης κούτσουρο πακέτο.

Τα χαρακτηριστικά του πακέτου Log15 περιλαμβάνουν:

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

Μπορείτε να εγκαταστήσετε Ημερολόγιο15 στα πακέτα Go σας με αυτήν την εντολή.

πηγαίνω λάβετε το github.com/inconshreveable/log15

Είναι εύκολο να ξεκινήσετε με το πακέτο Log15. Ακολουθεί ένα παράδειγμα δημιουργίας ενός καταγραφικού και καταγραφής πληροφοριών και επιπέδων σφαλμάτων με το πακέτο.

εισαγωγή (
αρχείο καταγραφής "github.com/inconshreveable/log15" // ψευδώνυμο εισαγωγή ως αρχείο καταγραφής
)

funcκύριος() {
serverLog := αρχείο καταγραφής. Νέο("αποθήκη", "νέος αποθήκη") // instantiating logger
καταγραφή διακομιστή. Πληροφορίες ("επιτυχής έλεγχος υγείας του επιπέδου αποθετηρίου") // αρχείο καταγραφής πληροφοριών
καταγραφή διακομιστή. Σφάλμα ("αποτυχία ελέγχου υγείας του επιπέδου αποθετηρίου") // αρχείο καταγραφής σφαλμάτων
}

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

ο Πληροφορίες μέθοδος επιστρέφει ένα μήνυμα πληροφοριών και το Λάθος μέθοδος επιστρέφει ένα μήνυμα σφάλματος.

Γράψτε χρήσιμα και κατανοητά αρχεία καταγραφής

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

Χρησιμοποιήστε τα επίπεδα καταγραφής, τη δομή και το πλαίσιο για να κάνετε τα αρχεία καταγραφής σας κατανοητά και κατάλληλα για τους σκοπούς που προορίζονται.