Εισαγωγή στην καταγραφή για προγραμματιστές

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

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

Αυτό είναι το διαγνωστικό μέρος της καταγραφής, το πιο σημαντικό και βασικά αυτό που οι προγραμματιστές θα μπορούσαν να κατανοήσουν ευκολότερα, καθώς είναι περισσότερο μέρος της καθημερινής εργασίας τους. Υπάρχει ένα άλλο μέρος που ονομάζεται καταγραφή ελέγχου . Όπου η καταγραφή διαγνωστικών φροντίζει να καταγράφει τα συμβάντα που συμβαίνουν κατά τη διάρκεια του χρόνου εκτέλεσης (κλήσεις μεθόδου, είσοδο / έξοδοι, κλήσεις HTTP, εκτελέσεις SQL), η καταγραφή ελέγχου είναι υπεύθυνη για την καταγραφή πιο αφηρημένων συμβάντων επιχειρηματικής λογικής. Τέτοια συμβάντα μπορεί να είναι ενέργειες χρήστη (προσθήκη / επεξεργασία / αφαίρεση περιεχομένου, συναλλαγές, δεδομένα πρόσβασης) ή άλλα πράγματα που έχουν είτε διαχειριστική αξία είτε, πιο σημαντικό, νομική αξία.

Στον κόσμο του πίσω άκρου, υπήρξαν μερικά μεγάλα πλαίσια υλοτομίας για να διαλέξετε, καθώς η ανάγκη για αυτά προέκυψαν πολύ νωρίτερα. Για παράδειγμα, στην Java, μπορείτε να διαλέξετε μεταξύ της μηχανής καταγραφής της Java, του java.util.logging ή κάποιων εξαιρετικών εξωτερικών πλαισίων όπως το Logback ή το πιο δημοφιλές Log4j.

Στον κόσμο της διεπαφής, τα πράγματα δεν έχουν φτάσει μέχρι τώρα, αλλά υπάρχουν επιλογές που μπορούν να σας βοηθήσουν να κάνετε το επιπλέον βήμα (και φυσικά να απαλλαγείτε από τα ασήμαντα μηνύματα της κονσόλας.log). Δύο τέτοιες βιβλιοθήκες Javascript για τη διεπαφή είναι το ελάχιστο αλλά ισχυρό loglevel και το πρόγραμμα περιήγησης-bunyan, μια θύρα της εντυπωσιακής μονάδας καταγραφής node.js για το πρόγραμμα περιήγησης. Ορισμένα χαρακτηριστικά είναι κοινά μεταξύ αυτών των πλαισίων, αλλά υπάρχουν μοναδικά που θα πρέπει να καθοδηγήσουν τον προγραμματιστή να επιλέξει ποιο χρειάζεται. Η χρήση αυτών μπορεί να παρουσιαστεί με μερικά παραδείγματα.

Μανιφέστο: Τα αρχεία καταγραφής διακομιστή πρέπει να είναι δομημένα. Το JSON είναι μια καλή μορφή. Ας το κάνουμε.

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

Εκτός από την ικανότητα εξαγωγής JSON, η Bunyan έχει την έννοια των θυγατρικών καταγραφικών, η οποία μπορεί να χρησιμοποιηθεί για τη δημιουργία διαφορετικών καταγραφικών για διαφορετικά στοιχεία της εφαρμογής. Αυτό δίνει μεγάλη ευελιξία ως προς τα πεδία και τις επιπλέον πληροφορίες που θέλετε να συμπεριλάβετε μόνο σε συγκεκριμένα μέρη της εφαρμογής σας. Το Bunyan ενσωματώνει επίσης ροές, οι οποίες είναι οι ρυθμίσεις «εξόδου» των καταγραφικών της. Μπορείτε να δημιουργήσετε πολλές ροές και να αντιστοιχίσετε ένα μετάλλευμα σε κάθε καταγραφικό και κάθε ροή μπορεί να έχει διαφορετικές ρυθμίσεις, όπως το ελάχιστο επίπεδο καταγραφών για εγγραφή (τα αποδεκτά επίπεδα του Bunyan είναι μοιραία / σφάλμα / προειδοποίηση / πληροφορίες / εντοπισμός σφαλμάτων / ίχνη) ή μέθοδος εξόδου ( στο πρόγραμμα περιήγησης υπάρχουν μόνο επιλογές σχετικά με την κονσόλα, αλλά, σε ένα περιβάλλον κόμβου μπορείτε να κάνετε άλλα πράγματα, όπως εγγραφή αρχείων καταγραφής σε ένα συγκεκριμένο αρχείο).

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

Με μια αρκετά μέτρια δήλωση, το loglevel παρουσιάζει ένα ελάχιστο πλαίσιο καταγραφής που προσθέτει μόνο το ελάχιστο ελάχιστο που χρειάζονται οι περισσότερες εφαρμογές. Προσθέτει κάποια κατάλληλη καταγραφή σε επίπεδο (trace / debug / info / warn / error) και φιλτράρισμα ως προς το ελάχιστο επίπεδο που θα εμφανίζεται στην κονσόλα.

Η δύναμη αυτού του πλαισίου είναι η απλότητά του, καθώς είναι εύκολο να το ενσωματώσετε στο έργο σας και να αρχίσετε να το χρησιμοποιείτε, αντικαθιστώντας το console.log () για πάντα. Επιπλέον, το loglevel έχει ένα ακόμη κρυφό κόσμημα, την επεκτασιμότητα του, καθώς υπάρχουν διάφορα πρόσθετα γραμμένα για αυτό, που παρέχουν επιπλέον δυνατότητες για όσους τα θέλουν, όπως προθέματα μηνυμάτων.

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