Înregistrare Java

În acest tutorial, vom afla despre Java Logging și diferitele sale componente, cu ajutorul exemplelor.

Java ne permite să creăm și să captăm mesaje și fișiere jurnal prin procesul de jurnalizare.

În Java, jurnalizarea necesită cadre și API-uri. Java are un cadru de logare încorporat în java.util.loggingpachet.

Putem folosi, de asemenea, cadre terță parte, cum ar fi Log4j, Logback și multe altele în scopuri de logare.

Componente de înregistrare Java

Figura de mai jos reprezintă componentele de bază și fluxul de control al API-ului Java Logging ( java.util.logging).

Înregistrare Java

1. Logger

LoggerClasa oferă metode pentru înregistrarea în jurnal. Putem instanționa obiecte din Loggerclasă și îi putem apela metodele în scopuri de înregistrare.

Să luăm un exemplu.

 Logger logger = Logger.getLogger("newLoggerName"); 

getLogger()Metoda a Loggerclasei este utilizată pentru a găsi sau de a crea un nou Logger. Argumentul șir definește numele jurnalului.

Aici, acest lucru creează un Loggerobiect nou sau returnează un existent Loggercu același nume.

Este o convenție de a defini o Loggerdupă clasa curentă folosind class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Notă: Această metodă se va arunca NullPointerExceptiondacă numele trecut este null.

Fiecare Loggerare un nivel care determină importanța mesajului jurnal. Există 7 niveluri de bază ale jurnalului:

Nivel jurnal (în ordine descrescătoare) Utilizare
GRAVE eșec grav
AVERTIZARE mesaj de avertizare, o problemă potențială
INFO informații generale despre timpul de rulare
CONFIG informații de configurare
AMENDA informații generale pentru dezvoltatori (urmărirea mesajelor)
FINER informații detaliate pentru dezvoltatori (urmărirea mesajelor)
CEL MAI BUN informații foarte detaliate pentru dezvoltatori (urmărirea mesajelor)
OPRIT opriți înregistrarea pentru toate nivelurile (nu capturați nimic)
TOATE activați înregistrarea pentru toate nivelurile (capturați totul)

Fiecare nivel de jurnal are o valoare întreagă care determină severitatea acestora, cu excepția a două niveluri de jurnal speciale OFFși ALL.

Înregistrarea mesajului

În mod implicit, primele trei niveluri de jurnal sunt întotdeauna jurnalizate. Pentru a seta un nivel diferit, putem folosi următorul cod:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

În acest exemplu, numai nivelul FINEși nivelurile de deasupra acestuia sunt setate pentru a fi înregistrate. Toate celelalte mesaje din jurnal sunt abandonate.

Acum, pentru a înregistra un mesaj, folosim log()metoda.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Există metode de scurtare pentru înregistrarea la nivelurile dorite.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Toate cererile de jurnal care au trecut nivelul de jurnal setat sunt apoi redirecționate către LogRecord .

Notă: dacă nivelul unui jurnal este setat la null, nivelul său este moștenit de la părintele său și așa mai departe în copac.

2. Filtre

Un filtru (dacă este prezent) determină dacă LogRecord trebuie redirecționat sau nu. După cum sugerează și numele, filtrează mesajele jurnal în funcție de criterii specifice.

Un LogRecord este transmis doar de la logger la handlerul de jurnal și de la handlerul de jurnal la sistemele externe numai dacă acesta trece criteriile specificate.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Manipulatori (Anexe)

Gestionarul de jurnal sau anexele primesc LogRecord și îl exportă către diferite ținte.

Java SE oferă 5 handler-uri încorporate:

Manipulatori Utilizare
StreamHandler scrie unui OutputStream
ConsoleHandler scrie la consolă
FileHandler scrie la dosar
SocketHandler scrie pe porturi TCP la distanță
MemoryHandler scrie în memorie

Un handler poate trece LogRecord la un filtru pentru a determina din nou dacă poate fi redirecționat către sisteme externe sau nu.

Pentru a adăuga un nou handler, folosim următorul cod:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Pentru a elimina un handler, folosim următorul cod:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Un logger poate avea mai multe gestionare. Pentru a obține toți gestionarii, folosim următorul cod:

 Handler() handlers = logger.getHandlers(); 

4. Formatatori

Un handler poate utiliza, de asemenea, un Formatter pentru a formata obiectul LogRecord într-un șir înainte de a-l exporta în sisteme externe.

Java SE are două formate încorporate :

Formatatori Utilizare
SimpleFormatter formatează LogRecord în șir
XMLFormatter formate LogRecord pentru a forma XML

Putem folosi următorul cod pentru a formata un handler:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

Obiectul LogManager ține evidența informațiilor de înregistrare la nivel global. Citește și menține configurația de înregistrare și instanțele de înregistrare.

Managerul de jurnal este un singleton, ceea ce înseamnă că este instanțiată o singură instanță a acestuia.

Pentru a obține instanța managerului de jurnal, folosim următorul cod:

 LogManager manager = new LogManager(); 

Avantajele înregistrării

Iată câteva dintre avantajele conectării în Java.

  • ajută la monitorizarea fluxului programului
  • ajută la captarea oricăror erori care pot apărea
  • oferă suport pentru diagnosticarea și depanarea problemelor

Articole interesante...