Registrazione delle Attività (Logging)

Java:
Registrazione delle Attività (Logging)

Come fare:

Ecco un modo semplice per iniziare con il logging in Java utilizzando il pacchetto integrato java.util.logging.

import java.util.logging.Logger;
import java.util.logging.Level;

public class AppLogging {
    private final static Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

    public static void main(String[] args) {
        LOGGER.info("Registrazione di un messaggio a livello INFO");

        try {
            int divisione = 10 / 0;
        } catch (ArithmeticException e) {
            LOGGER.log(Level.SEVERE, "Si è verificata un'eccezione", e);
        }
    }
}

Questo produrrà un’uscita simile a:

03 lug 2023 14:00:00 PM AppLogging main
INFO: Registrazione di un messaggio a livello INFO
03 lug 2023 14:00:00 PM AppLogging main
SEVERE: Si è verificata un'eccezione
java.lang.ArithmeticException: / by zero
    at AppLogging.main(AppLogging.java:10)

Approfondimenti

Il logging in Java si è notevolmente evoluto. Storicamente, il logging era più ad-hoc con uscite di sistema e meccanismi scritti autonomamente. Tuttavia, la necessità di standardizzazione ha portato alle API di logging come Log4j e SLF4J. Il pacchetto java.util.logging è stato introdotto in JDK 1.4, fornendo un modo standardizzato per registrare i messaggi.

Alternative a java.util.logging (JUL) includono Log4j 2 e SLF4J. Mentre JUL è integrato in Java e quindi non richiede dipendenze aggiuntive, sia Log4j 2 che SLF4J offrono funzionalità più avanzate come un controllo più granulare sulla configurazione del logging, logging asincrono e migliori prestazioni.

Dal punto di vista dell’implementazione, il logging può essere sincrono, dove ogni messaggio di log viene elaborato nel thread che lo ha generato, o asincrono, dove i messaggi vengono passati a un thread separato. Il logging asincrono può migliorare le prestazioni ma introduce complessità poiché si deve gestire la concorrenza e assicurare che i messaggi di log non vengano persi in caso di crash dell’applicazione.

Vedi anche