Cos'è il logger in Java e perché lo usi?



Questo articolo su Logger in Java è una guida completa sull'API di registrazione Java utilizzata per le soluzioni di registrazione durante la creazione dei progetti.

La registrazione è una caratteristica importante che deve essere considerata dagli sviluppatori per risalire agli errori. , essendo uno dei linguaggi di programmazione più popolari, viene fornito con un approccio personalizzabile alla registrazione fornendo un'API di registrazione di base. Quindi, in questo articolo su Logger in Java, parlerò di come può utilizzare questa funzione per abilitare la registrazione estensibile in Java.

I seguenti argomenti verranno trattati in questo articolo:





    1. Necessità di registrazione
    2. Componenti di registrazione
    3. Cos'è Logger?
    4. Appender o gestori
    5. Layout o formattatori

Prima, ci immergiamo in profondità nel log in java, facci capire la necessità di logging.

Necessità di registrazione

Durante la creazione di applicazioni, spesso ci troviamo di fronte a errori che devono essere sottoposti a debug. Quindi, con l'aiuto dei log, possiamo facilmente ottenere informazioni su ciò che sta accadendo nell'applicazione con un record di errori e circostanze insolite. Ora, potresti pensare che, perché non utilizzare l'istruzione System.out.print () in . Ebbene, il problema con queste istruzioni è che i messaggi di log verranno stampati solo sulla console. Quindi, una volta chiusa la console, automaticamente, tutti i log andranno persi. Pertanto, i registri non verranno archiviati in modo permanente e vengono visualizzati uno per uno, poiché si tratta di un ambiente a thread singolo.



Per evitare tali problemi, l'accesso a Java è semplificato con l'aiuto diAPI fornita tramitejava.util.loggingpacchetto e ilorg.apache.log4j. *pacchetto.

Componenti di registrazione

I componenti di registrazione Java aiutano lo sviluppatore a creare log, passare i log alla rispettiva destinazione e mantenere un formato corretto. I seguenti sono i tre componenti:

  • Logger - Responsabile dell'acquisizione dei record di registro e del loro passaggio all'Appender corrispondente.
  • Appendici o gestori - Sono responsabili della registrazione degli eventi del registro in una destinazione. Gli allegati formattano gli eventi con l'aiuto dei layout, prima di inviare gli output.
  • Layout o formattatori - Responsabile di determinare l'aspetto dei dati quando vengono visualizzati nella voce di registro.

È possibile fare riferimento all'immagine sottostante per il funzionamento di tutti e tre i componenti:



Logging Components - Logger in Java - Edureka

Quando un'applicazione effettua una chiamata di registrazione, il componente Logger registra l'evento in un LogRecord e lo inoltra all'appender appropriato. Quindi ha formattato il record utilizzando il layout in base al formato richiesto. Oltre a questo, puoi anche usare più di un filtro per specificare quali allegati devono essere usati per gli eventi.

Ora, cerchiamo di capire a fondo cos'è un logger in Java.

Cos'è Logger in Java?

I logger in Java sono oggetti che attivano eventi di log, vengono creati e vengono chiamati nel codice dell'applicazione, dove generano eventi di log prima di passarli al componente successivo che è un Appender. È possibile utilizzare più logger in una singola classe per rispondere a vari eventi o utilizzare i logger in una gerarchia. Normalmente vengono denominati utilizzando lo spazio dei nomi separato da punti gerarchici. Inoltre, tutti i nomi dei logger devono essere basati sulla classe o sul nome del pacchetto del componente registrato.

Oltre a questo, ogni logger tiene traccia dell'antenato esistente più vicino nel file Registri spazio dei nomi e ha anche un 'Livello' ad esso associato. Bene, parlerò dei logger nell'ultima parte di questo articolo, ma prima di questo, lascia che ti mostri come creare un logger in Java.

Crea nuovo logger

Il processo di creazione di un nuovo Logger in Java è abbastanza semplice. Devi usareLogger.getLogger ()metodo. IlgetLogger () identifica il nome del Logger e prende la stringa come parametro. Quindi, se un logger preesiste allora, quel logger viene restituito, altrimenti viene creato un nuovo logger.

Sintassi:

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

Qui, SampleClass è il nome della classe per cui stiamo ottenendo l'oggetto Logger.

Esempio:

public class Cliente {private static final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Ora che ti ho spiegato come creare un logger in Java, vediamo i diversi livelli disponibili nel logging.

framework basato sui dati nel webdriver al selenio

Livelli di registro

I livelli di registro vengono utilizzati per classificare i registri in base alla loro gravità o all'impatto sulla stabilità dell'applicazione. Ilorg.apache.log4j. *pacchetto e iljava.util.loggingentrambi forniscono diversi livelli di registrazione. Diamo un'occhiata a ciascuno di essi uno per uno.

org.apache.log4j. *pacchetto fornisce i seguenti livelli in ordine decrescente:

  • FATALE
  • ERRORE
  • AVVISARE
  • INFORMAZIONI
  • DEBUG

java.util.loggingpacchetto fornisce i seguenti livelli in ordine decrescente:

  • SEVERE (LIVELLO MASSIMO)
  • AVVERTIMENTO
  • INFORMAZIONI
  • CONFIG
  • FINE
  • FINER
  • MIGLIORE (LIVELLO PIÙ BASSO)

Oltre a questo, il pacchetto di cui sopra fornisce anche due livelli aggiuntiviTUTTIeOFFutilizzato rispettivamente per registrare tutti i messaggi e disabilitare la registrazione.

Esempio di accesso a Java utilizzando l'estensioneorg.apache.log4j. *pacchetto:

import org.apache.log4j.Logger public class Customer {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}

Quindi se il tuo output èlogger di root come livello WARN nel nostro log4j.properties file, quindi tutti i messaggi di errore con una priorità maggiore di WARN verranno stampati come di seguito:

È inoltre possibile impostare il livello utilizzando il metodo setLevel () dajava.util.loggingpacchetto come di seguito:

logger.setLevel (Level.WARNING)

Esempio di accesso a Java utilizzando l'estensionejava.util.loggingpacchetto:

pacchetto 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) public void sampleLog () {LOGGER.log (Level.WARNING, 'Welcome to Edureka!')}} public class Cliente {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, 'Ciao! Benvenuto da Edureka')}}

Per abilitare il login nella tua applicazione utilizzando il fileorg.apache.log4j. *pacchetto o iljava.util.loggingpacchetto, devi configurare il file delle proprietà. Successivamente in questo articolo su Logger in Java, discutiamo il file delle proprietà di entrambi.

File delle proprietà di Log4j e Java Util Package

File delle proprietà di Log4j di esempio:

# Abilita l'opzione root logger log4j.rootLogger = INFO, file, stdout # Allega appendici al file di stampa 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 # Allega appendici da stampare sulla console 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 HH: mm: ss}% -5p% c {1}:% L -% m% n
  • Il file delle proprietà di Log4j viene creato all'interno della cartella src del progetto.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Stampa tutti i log in un file
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Stampa tutti i log nella console
  • log4j.appender.file.File = D: loglogging.log -> Specifica la posizione del file di registro
  • log4j.appender.file.MaxFileSize = 10 MB -> Dimensione massima del file di registro a 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Limita il numero di file di backup a 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Specifica il modello in cui i log verranno stampati nel file di log.
  • log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Imposta il modello di conversione predefinito.

Campione File delle proprietà del pacchetto Java Util

handlers = java.util.logging.ConsoleHandler .level = ATTENZIONE # L'output verrà memorizzato nella directory predefinita 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 # Il livello dei log sarà limitato a WARNING e oltre. java.util.logging.ConsoleHandler.level = ATTENZIONE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Qui,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Verrebbero scritti i file di registroC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->La quantità massima che il logger scrive su un file in byte.
  • java.util.logging.FileHandler.count = 1 -> Specifica il numero di file di output
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Menziona il formattatore utilizzato per la formattazione. Qui viene utilizzato XML Formatter.
  • java.util.logging.ConsoleHandler.level = WARNING -> Imposta il livello di log predefinito su WARNING
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Specifica ilFormatterper essere utilizzato da tuttiConsoleHandler'S. Qui viene utilizzato SimpleFormatter.

Registrazione di eventi

Per accedere agli eventi , devi assicurarti di assegnare un livello per filtrare facilmente gli eventi. Per assegnare un livello e menzionare un messaggio puoi utilizzare i seguenti metodi:

array di oggetti di classe java

Metodo 1:

logger.log (Level.INFO, 'Visualizza messaggio')
Qui, il livello è INFO e il messaggio da stampare è 'Visualizza messaggio'.

Metodo 2:

logger.info ('Visualizza messaggio')

Per assicurarti che Logger in Java registri solo gli eventi che sono pari o superiori al livello INFO, puoi utilizzare il file setLevel () metodo discusso sopra.

Ora, che ho discusso su come utilizzare Logger in Java, parliamo del prossimo componente dell'architettura Log4j, ovvero Appenders.

Appender o gestori

L'appender o i gestori sono responsabili della registrazione degli eventi del registro in una destinazione. Ogni logger ha accesso a più gestori e riceve il messaggio di log dal logger. Quindi, gli allegati utilizzano i formattatori o i layout per formattare gli eventi e inviarli alla destinazione corrispondente.

Un appender può essere disattivato utilizzando il metodo setLevel (Level.OFF). I due gestori più standard injava.util.loggingpacchetto sono i seguenti:

  • FileHandler: Scrivere il messaggio di registro su file
  • ConsoleHandler: Scrive il messaggio di registro nella console

Per tua migliore comprensione, ho spiegato alcune Appendici nella sezione delle proprietà.

Layout o formattatori

Il layout dei formattatori viene utilizzato per formattare e convertire i dati in un evento di registro.I framework di registrazione forniscono layout per HTML, XML, Syslog, JSON, testo normale e altri log.

  1. SimpleFormatter : Genera messaggi di testo con informazioni di base.
  2. XMLFormatter : Genera un messaggio XML per il registro

Per tua migliore comprensione, ho spiegato alcuni layout nella sezione delle proprietà.Con questo, arriviamo alla fine di questo blog su 'Logger in Java'. Spero che voi ragazzi abbiate capito cosa vi è stato insegnato in questo articolo.

Controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per studenti e professionisti che desiderano diventare sviluppatori Java. Il corso è progettato per darti un vantaggio nella programmazione Java e formarti per concetti Java sia di base che avanzati insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog 'Logger in Java' e ti risponderemo il prima possibile.