Τι είναι το καταγραφικό στην Java και γιατί το χρησιμοποιείτε;



Αυτό το άρθρο σχετικά με το Logger in Java είναι ένας πλήρης οδηγός για το Java logging API που χρησιμοποιείται για την καταγραφή λύσεων κατά τη δημιουργία έργων.

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

Τα ακόλουθα θέματα θα καλυφθούν σε αυτό το άρθρο:





    1. Ανάγκη για καταγραφή
    2. Στοιχεία καταγραφής
    3. Τι είναι το Logger;
    4. Προσφυγή ή χειριστές
    5. Διάταξη ή μορφοποιητές

Πριν, βυθίσουμε βαθιά τη σύνδεση στο java, ας καταλάβουμε την ανάγκη για καταγραφή.

Ανάγκη για καταγραφή

Κατά τη δημιουργία εφαρμογών, αντιμετωπίζουμε συχνά σφάλματα που πρέπει να εντοπιστούν σφαλμάτων. Έτσι, με τη βοήθεια των αρχείων καταγραφής, μπορούμε εύκολα να λάβουμε πληροφορίες σχετικά με το τι συμβαίνει στην εφαρμογή με ένα αρχείο σφαλμάτων και ασυνήθιστων περιστάσεων. Τώρα, μπορεί να θυμάστε ότι, γιατί να μην χρησιμοποιήσετε τη δήλωση System.out.print () στο . Λοιπόν, το πρόβλημα με αυτές τις δηλώσεις είναι ότι τα μηνύματα καταγραφής θα εκτυπώνονται μόνο στην κονσόλα. Έτσι, μόλις κλείσετε την κονσόλα, αυτόματα, όλα τα αρχεία καταγραφής θα χαθούν. Επομένως, τα αρχεία καταγραφής δεν θα αποθηκεύονται μόνιμα και θα εμφανίζονται ένα προς ένα, καθώς είναι περιβάλλον με ένα νήμα.



Για την αποφυγή τέτοιων προβλημάτων, η σύνδεση στο Java απλοποιείται με τη βοήθεια τουAPI παρέχεται μέσω τουjava.util.loggingπακέτο, και τοorg.apache.log4j. *πακέτο.

Στοιχεία καταγραφής

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

  • Καταγραφείς - Υπεύθυνος για τη σύλληψη αρχείων καταγραφής και τη διαβίβασή τους στον αντίστοιχο Appender.
  • Παραρτήματα ή χειριστές - Είναι υπεύθυνοι για την καταγραφή συμβάντων καταγραφής σε έναν προορισμό. Οι προσαρτητές μορφοποιούν συμβάντα με τη βοήθεια του Layouts, πριν από την αποστολή εξόδων.
  • Διατάξεις ή μορφοποιητές - Υπεύθυνος για τον προσδιορισμό της εμφάνισης των δεδομένων όταν εμφανίζονται στην καταχώρηση καταγραφής.

Μπορείτε να ανατρέξετε στην παρακάτω εικόνα για τη λειτουργία και των τριών στοιχείων:



Στοιχεία καταγραφής - Καταγραφέας σε Java - Edureka

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

Τώρα, ας καταλάβουμε τι είναι ένα καταγραφικό σε Java σε βάθος.

Τι είναι το Logger στην Java;

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

Εκτός από αυτό, κάθε καταγραφέας παρακολουθεί τον κοντινότερο υπάρχοντα πρόγονο στο Κούτσουρα namespace και έχει επίσης ένα 'Επίπεδο' που σχετίζεται με αυτό. Λοιπόν, θα συζητήσω τους Loggers στο τελευταίο μέρος αυτού του άρθρου, αλλά πριν από αυτό, επιτρέψτε μου να σας δείξω πώς να δημιουργήσετε ένα Logger στην Java.

Δημιουργήστε νέο καταγραφικό

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

Σύνταξη:

static Logger logger = Logger.getLogger (SampleClass.class.getName ())

Εδώ, το SampleClass είναι το όνομα κλάσης για το οποίο λαμβάνουμε το αντικείμενο Logger.

Παράδειγμα:

πελάτης δημόσιας τάξης {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Τώρα που σας έχω πει πώς να δημιουργήσετε ένα Logger στην Java, ας δούμε τα διαφορετικά επίπεδα που είναι διαθέσιμα στην καταγραφή.

Επίπεδα καταγραφής

Τα επίπεδα καταγραφής χρησιμοποιούνται για την κατηγοριοποίηση των αρχείων καταγραφής βάσει της σοβαρότητάς τους ή του αντίκτυπου στη σταθερότητα της εφαρμογής. οorg.apache.log4j. *πακέτο και τοjava.util.loggingκαι οι δύο παρέχουν διαφορετικά επίπεδα καταγραφής. Ας ρίξουμε μια ματιά σε καθένα από αυτά ένα προς ένα.

συγχώνευση ταξινόμησης πηγαίου κώδικα c ++

org.apache.log4j. *Το πακέτο παρέχει τα ακόλουθα επίπεδα σε φθίνουσα σειρά:

  • ΜΟΙΡΑΙΟΣ
  • ΛΑΘΟΣ
  • ΠΡΟΕΙΔΟΠΟΙΩ
  • ΠΛΗΡΟΦΟΡΙΕΣ
  • ΧΡΕΩΣΗ

java.util.loggingΤο πακέτο παρέχει τα ακόλουθα επίπεδα σε φθίνουσα σειρά:

  • ΔΙΑΦΟΡΑ (ΥΨΗΛΟ ΕΠΙΠΕΔΟ)
  • ΠΡΟΕΙΔΟΠΟΙΗΣΗ
  • ΠΛΗΡΟΦΟΡΙΕΣ
  • ΔΙΑΜΟΡΦΩΣΗ
  • ΠΡΟΣΤΙΜΟ
  • ΠΙΟ ΚΑΛΗ
  • ΤΕΛΟΣ (ΧΑΜΗΛΟ ΕΠΙΠΕΔΟ)

Εκτός από αυτό, το παραπάνω πακέτο παρέχει επίσης δύο επιπλέον επίπεδαΟΛΑκαιΜΑΚΡΙΑ ΑΠΟχρησιμοποιείται για την καταγραφή όλων των μηνυμάτων και την απενεργοποίηση της καταγραφής αντίστοιχα.

Παράδειγμα σύνδεσης σε Java χρησιμοποιώντας τοorg.apache.log4j. *πακέτο:

import org.apache.log4j.Logger δημόσια τάξη Πελάτης {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('ΠΡΟΕΙΔΟΠΟΙΗΣΗ') logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}

Έτσι, εάν η παραγωγή σας είναιroot logger ως WARN-level στο δικό μας log4j.properties αρχείο, τότε όλα τα μηνύματα σφάλματος με υψηλότερη προτεραιότητα από το WARN θα εκτυπωθούν ως εξής:

Μπορείτε επίσης να ορίσετε το επίπεδο χρησιμοποιώντας τη μέθοδο setLevel () από τοjava.util.loggingπακέτο όπως παρακάτω:

logger.setLevel (Level.WARNING)

Παράδειγμα σύνδεσης σε Java χρησιμοποιώντας τοjava.util.loggingπακέτο:

πακέτο edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) δημόσιο void sampleLog () {LOGGER.log (Level.WARNING, 'Welcome to Edureka!')}} πελάτης δημόσιας τάξης {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, 'Γεια! Καλώς ορίσατε από το Edureka')}

Για να ενεργοποιήσετε τη σύνδεση στην εφαρμογή σας χρησιμοποιώντας τοorg.apache.log4j. *πακέτο ή τοjava.util.loggingπακέτο, πρέπει να διαμορφώσετε το αρχείο ιδιοτήτων. Στη συνέχεια, σε αυτό το άρθρο σχετικά με το Logger in Java, ας συζητήσουμε το αρχείο ιδιοτήτων και των δύο.

Αρχείο ιδιοτήτων του πακέτου Log4j και Java Util

Δείγμα αρχείου ιδιοτήτων Log4j:

# Enable Root logger option log4j.rootLogger = INFO, file, stdout # Attachend appenders to print file log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Επισυνάψτε προσαρτήματα για εκτύπωση στην κονσόλα log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {yyyy-MM-dd ΥΗ: mm: ss}% -5p% c {1}:% L -% m% n
  • Το αρχείο ιδιοτήτων Log4j δημιουργείται μέσα στον φάκελο src του έργου.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Εκτυπώνει όλα τα αρχεία καταγραφής σε ένα αρχείο
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Εκτυπώνει όλα τα αρχεία καταγραφής στην κονσόλα
  • log4j.appender.file.File = D: loglogging.log -> Καθορίζει τη θέση του αρχείου καταγραφής
  • log4j.appender.file.MaxFileSize = 10MB -> Μέγιστο μέγεθος του αρχείου καταγραφής έως 10MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Περιορίζει τον αριθμό των εφεδρικών αρχείων σε 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Καθορίζει το μοτίβο στο οποίο θα εκτυπώνονται τα αρχεία καταγραφής στο αρχείο καταγραφής.
  • log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Ορίζει το προεπιλεγμένο μοτίβο μετατροπής.

Δείγμα Αρχείο Ιδιότητας πακέτου Java Util

χειριστές = java.util.logging.ConsoleHandler .level = ΠΡΟΕΙΔΟΠΟΙΗΣΗ # Η έξοδος θα αποθηκευτεί στον προεπιλεγμένο κατάλογο java.util.logging.FileHandler.pattern =% h / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Το επίπεδο των αρχείων καταγραφής περιορίζεται σε ΠΡΟΕΙΔΟΠΟΙΗΣΗ και άνω. java.util.logging.ConsoleHandler.level = ΠΡΟΕΙΔΟΠΟΙΗΣΗ java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Εδώ,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Τα αρχεία καταγραφής θα γράφονταν σεC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->Το μέγιστο ποσό που γράφει ο καταγραφέας σε οποιοδήποτε αρχείο σε byte.
  • java.util.logging.FileHandler.count = 1 -> Καθορίζει τον αριθμό των αρχείων εξόδου
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Αναφέρει τον μορφοποιητή που χρησιμοποιείται για τη μορφοποίηση. Εδώ χρησιμοποιείται το XML Formatter.
  • java.util.logging.ConsoleHandler.level = ΠΡΟΕΙΔΟΠΟΙΗΣΗ -> Ορίζει το προεπιλεγμένο επίπεδο καταγραφής σε ΠΡΟΕΙΔΟΠΟΙΗΣΗ
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Καθορίζει τοΜορφοποιητήςγια χρήση από όλουςΚονσόλα χειριστή'μικρό. Εδώ, χρησιμοποιείται το SimpleFormatter.

Καταγραφή συμβάντων

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

Μέθοδος 1:

logger.log (Level.INFO, 'Εμφάνιση μηνύματος')
Εδώ, το επίπεδο είναι INFO και το μήνυμα που θα εκτυπωθεί είναι «Εμφάνιση μηνύματος».

Μέθοδος 2:

logger.info ('Εμφάνιση μηνύματος')

Για να βεβαιωθείτε ότι το Logger στην Java, καταγράφει μόνο συμβάντα που βρίσκονται στο ή πάνω από το επίπεδο INFO, μπορείτε να χρησιμοποιήσετε το setLevel () μέθοδος που συζητήθηκε παραπάνω.

Τώρα, που έχω συζητήσει πώς να χρησιμοποιείτε το Logger στην Java, ας συζητήσουμε το επόμενο στοιχείο της αρχιτεκτονικής Log4j, δηλαδή Appenders.

Προσφυγή ή χειριστές

Το Appender ή Handlers είναι υπεύθυνο για την καταγραφή συμβάντων καταγραφής σε έναν προορισμό. Κάθε καταγραφέας έχει πρόσβαση σε πολλούς χειριστές και λαμβάνει το μήνυμα καταγραφής από τον καταγραφέα. Στη συνέχεια, οι Appenders χρησιμοποιούν Formatters ή Layouts για να μορφοποιήσουν τα συμβάντα και να τα στείλουν στον αντίστοιχο προορισμό.

Ένα Appender μπορεί να απενεργοποιηθεί χρησιμοποιώντας τη μέθοδο setLevel (Level.OFF). Οι δύο πιο τυπικοί χειριστές στοjava.util.loggingτο πακέτο έχει ως εξής:

  • FileHandler: Γράψτε το μήνυμα καταγραφής στο αρχείο
  • Κονσόλα Χειριστής: Γράφει το μήνυμα καταγραφής στην κονσόλα

Για την καλύτερη κατανόησή σας, εξήγησα λίγα Appenders στην ενότητα ιδιοτήτων.

Διάταξη ή μορφοποιητές

Η διάταξη του Formatters χρησιμοποιείται για τη μορφοποίηση και τη μετατροπή δεδομένων σε ένα συμβάν καταγραφής.Τα πλαίσια καταγραφής παρέχουν διατάξεις για HTML, XML, Syslog, JSON, απλό κείμενο και άλλα αρχεία καταγραφής.

  1. SimpleFormatter : Δημιουργεί μηνύματα κειμένου με βασικές πληροφορίες.
  2. XMLFormatter : Δημιουργεί μήνυμα XML για το αρχείο καταγραφής

Για την καλύτερη κατανόησή σας, εξήγησα μερικές διατάξεις στην ενότητα ιδιοτήτων.Με αυτό, φτάνουμε στο τέλος αυτού του ιστολογίου στο 'Logger in Java'. Ελπίζω να είστε ξεκάθαροι με αυτό που σας έχει διδάξει σε αυτό το άρθρο.

Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για φοιτητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για τις βασικές όσο και για τις προηγμένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου 'Logger in Java' και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.