Java:
Logboekregistratie

Hoe:

Hier is een eenvoudige manier om te beginnen met loggen in Java met behulp van het ingebouwde java.util.logging pakket.

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("Logging een INFO-niveau bericht");

        try {
            int deling = 10 / 0;
        } catch (ArithmeticException e) {
            LOGGER.log(Level.SEVERE, "Uitzondering voorgevallen", e);
        }
    }
}

Dit zou een uitvoer produceren die ongeveer zo luidt:

Jul 03, 2023 2:00:00 PM AppLogging main
INFO: Logging een INFO-niveau bericht
Jul 03, 2023 2:00:00 PM AppLogging main
SEVERE: Uitzondering voorgevallen
java.lang.ArithmeticException: / door nul
    bij AppLogging.main(AppLogging.java:10)

Diepere Duik

Loggen in Java is behoorlijk geëvolueerd. Historisch gezien was loggen meer ad-hoc met systeemuitvoer en zelfgeschreven mechanismen. Echter, de behoefte aan standaardisatie leidde tot log-API’s zoals Log4j en SLF4J. Het java.util.logging pakket zelf werd geïntroduceerd in JDK 1.4, wat een gestandaardiseerde manier bood om berichten te loggen.

Alternatieven voor java.util.logging (JUL) zijn onder andere Log4j 2 en SLF4J. Hoewel JUL ingebouwd is in Java en dus geen extra afhankelijkheden vereist, bieden zowel Log4j 2 als SLF4J geavanceerdere functies zoals meer gedetailleerde controle over de logconfiguratie, asynchroon loggen en betere prestaties.

Wat betreft implementatie kan loggen zowel synchroon zijn, waarbij elk logbericht wordt verwerkt in de draad die het heeft gegenereerd, of asynchroon, waarbij berichten worden overgedragen aan een aparte draad. Asynchroon loggen kan de prestaties verbeteren, maar introduceert complexiteit aangezien men gelijktijdigheid moet afhandelen en ervoor zorgen dat logberichten niet verloren gaan bij applicatiecrashes.

Zie Ook