Рубрики
Без рубрики

Начните с ведения журнала Java (и несколько советов по легкому изучению новых библиотек)

Когда я начал свой путь в области компьютерных наук 3 года назад в качестве студента бакалавриата CS, я начал учиться… С тегами java, ведение журнала, новички, log4j.

Когда я начал свой путь в области компьютерных наук 3 года назад, будучи студентом бакалавриата CS, я начал изучать основы программирования на python (операторы атрибуции, условия, циклы, функции, рекурсия и другие). Затем я перешел на Java с помощью ООП (объектно-ориентированного программирования), и за все это время я никогда не использовал ведение журнала для целей отладки или мониторинга… Я бы всегда использовал операторы печати. Только если бы я знал лучше, это сэкономило бы мне много времени.

Прежде чем перейти к деталям реализации, я дам краткий обзор ведения журнала и его уровней .

Уровни ведения журнала

Наиболее распространенными уровнями в системах ведения журнала являются Отладка , Информация , Предупреждение , Ошибка и Фатальный .

Отлаживать

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

Инфо

Этот уровень обычно используется для выделения того, когда что-то произошло. Он активен по умолчанию, в отличие от Debug. Обычно это используется как “утверждение” о том, что все работает гладко, и поскольку эти сообщения обычно содержат небольшие заметки, связанные с выполняемыми действиями, в конце дня информационные сообщения – это, по сути, просто шум.

Предупреждать

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

Ошибка

На уровне ОШИБОК регистрируются события ошибок, которые все еще могут позволить приложению продолжать работать, но все же требуют немедленного или близкого к немедленному ответа.

Роковой

Как указано в TutorialsPoint , сообщения фатального уровня используются для сообщения об очень серьезных ошибках, которые предположительно приведут к прерыванию работы приложения.

Ведение журнала Java

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

Допущения

Ради сосредоточенности и простоты я собираюсь использовать IntelliJ IDEA и я также собираюсь предположить, что у вас уже есть Java JDK , установленный на вашем компьютере.

Я собираюсь использовать простой “фиктивный” проект, чтобы объяснить ведение журнала на java, но вы можете включить этот код и конфигурацию непосредственно в свой проект.

Структура моего проекта выглядит следующим образом:

Использование платформы ведения журнала

В этом руководстве я собираюсь использовать Apache Log4j 2 , потому что это широко используемый фреймворк, и он мне очень нравится, но есть множество других фреймворков ведения журнала Java (подробнее здесь ).

В этом проекте я использую Maven, поэтому, чтобы добавить log4j в проект, мне нужно добавить следующий XML в мой pom.xml :


   org.apache.logging.log4j
   log4j-api
   2.13.3


   org.apache.logging.log4j
   log4j-core
   2.13.3

Настройка регистратора (другой подход)

В этом разделе я представляю вам подход, отличный от многих других руководств по настройке ведения журнала. Следуя мысли Роберта К. Мартина в Чистый код , я решил объяснить процесс обучения и настройки сторонней библиотеки с помощью обучающего тестирования. Как поясняет автор в книге, использование обучающих тестов для подхода к стороннему коду, который будет внедрен в ваш проект, является хорошей практикой, потому что:

  • Вы можете протестировать возможности и особенности библиотеки в контролируемой среде с помощью серии объективных и точных экспериментов.
  • Тесты, которые вы пишете в этом процессе обучения, являются хорошим инструментом для тестирования новых выпусков сторонних пакетов, где вы можете легко увидеть, изменилось ли что-то, что позволит вам принять обоснованное решение о том, обновлять версию пакета или нет.

Как бы то ни было, наше путешествие начинается. Первый шаг – добавить возможности тестирования в наш проект. Для этого нам нужно добавить этот XML в pom.xml (Я собираюсь использовать JUnit 5):


   org.junit.jupiter
   junit-jupiter-api
   5.6.2
   test


   org.junit.jupiter
   junit-jupiter-engine
   5.6.2
   test

Тестирование Поведения По Умолчанию

Далее, ничего не настраивая, мы протестируем наш сторонний пакет (log4j). Тесты, которые я написал, довольно просты, но их достаточно, чтобы протестировать основные возможности нашей платформы ведения журнала.

public class LogTest {
    private Logger logger;

    @BeforeEach
    public void init() {
        logger = LogManager.getLogger("TestLogger");
    }

    @Test
    void testSimpleMessage() {
        String message = "Hello World!";

        logger.trace(message);
        logger.debug(message);
        logger.info(message);
        logger.warn(message);
        logger.error(message);
        logger.fatal(message);
    }

    @Test
    void testFormattedMessage() {
        String formattedMessage = "Hello {}, this is my current grade {}!";
        String word = "World";
        double grade = 17.64;

        logger.trace(formattedMessage, word, grade);
        logger.debug(formattedMessage, word, grade);
        logger.info(formattedMessage, word, grade);
        logger.warn(formattedMessage, word, grade);
        logger.error(formattedMessage, word, grade);
        logger.fatal(formattedMessage, word, grade);
    }
}

Эти тесты не потерпят неудачу, вместо этого они покажут нам, каково поведение нашего регистратора по умолчанию.

Вывод подразумевает используемый формат и какой верхний уровень включен по умолчанию ( ОШИБКА ).

Конфигурация

Сначала перейдите в окно инструментов “Проект” в IntelliJ и разверните папку, пока не найдете папку “ресурсы” (java -> src -> main), точно так же, как на изображении, которое я показал ранее.

Теперь создайте имя файла log4j2.properties внутри этой папки.

После создания файла вставьте в файл следующие спецификации:

name = Log4j2PropertiesConfig

appenders = console

# configuration of console logging
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %highlight{%-21d{yyyy-MM-dd HH:mm:ss} %-12c %-8level %m%n}

# default root logging config
rootLogger.level = debug
rootLogger.appendRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

Когда вы вставляете эти конфигурации, результат повторного запуска тестов – это тот, который вы можете увидеть ниже:

Некоторые детали:

  • имя : просто указывает имя этого конкретного макета конфигурации.
  • appenders : имя различных компонентов appender (тех, которые эффективно записывают сообщение на какой-либо носитель).
  • Остальная конфигурация следует тому же принципу мышления, и более подробную информацию см. в разделе здесь .

Счастливого Обучения!

То, что я пытался показать вам сегодня, – это просто упрощенное введение в путь понимания использования и настройки ведения журнала с помощью log4j2 . Если вы хотите, вам еще многому предстоит научиться!

Вот несколько советов о том, что вы можете сделать:

  • Узнайте, как иметь несколько приложений, каждое из которых имеет свой тип вывода (консоль, файл и т.д.).
  • Узнайте, как настроить различные регистраторы, по одному для каждого уровня журнала.
  • Поиграйте с опциями, доступными для записи “макет”.
  • Узнайте о других способах настройки log4j.

Кроме того, как я уже сказал, существует множество вариантов фреймворков ведения журнала; когда вы почувствуете себя достаточно уверенно с log4j, попробуйте некоторые из них.

Оригинал: “https://dev.to/vascoalramos/get-started-with-java-logging-and-some-tips-to-easily-learn-new-libraries-4c83”