Java:
Журналирование

Как это сделать:

Вот простой способ начать работу с логированием в Java, используя встроенный пакет 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("Логирование сообщения уровня INFO");

        try {
            int division = 10 / 0;
        } catch (ArithmeticException e) {
            LOGGER.log(Level.SEVERE, "Произошло исключение", e);
        }
    }
}

Это приведёт к выводу вида:

Jul 03, 2023 2:00:00 PM AppLogging main
INFO: Логирование сообщения уровня INFO
Jul 03, 2023 2:00:00 PM AppLogging main
SEVERE: Произошло исключение
java.lang.ArithmeticException: / на ноль
    at AppLogging.main(AppLogging.java:10)

Подробнее

Логирование в Java значительно развилось. Исторически, логирование было более адаптивным с системными выводами и самописными механизмами. Однако потребность в стандартизации привела к появлению API для логирования, таких как Log4j и SLF4J. Пакет java.util.logging был введен в JDK 1.4, предоставляя стандартизированный способ записи сообщений.

Альтернативы java.util.logging (JUL) включают Log4j 2 и SLF4J. Хотя JUL встроен в Java и поэтому не требует дополнительных зависимостей, как Log4j 2 и SLF4J предлагают более продвинутые функции, такие как более детальный контроль над конфигурацией логирования, асинхронное логирование и лучшая производительность.

С точки зрения реализации, логирование может быть как синхронным, когда каждое сообщение лога обрабатывается в том потоке, который его сгенерировал, так и асинхронным, когда сообщения передаются в отдельный поток. Асинхронное логирование может улучшить производительность, но вводит сложность, поскольку необходимо управлять параллелизмом и гарантировать, что сообщения лога не будут потеряны при сбое приложения.

Смотрите также