RestAPI + Java+spring. Часть 9 — добавление логирования

Natalya Khrebtiivsky
3 min readJun 14, 2021

--

В этой статье мы добавим логер в наше уже работающее приложение приложение.

В первой статье мы разобрались что вообще будем делать.
Во второй части создали Spring Boot приложение и подключили к нему maven.
В третьей части мы подключили БД (H2) и создали класс для добавления объекта (Entity)
В четвертой части мы создали классы контроллера и сервиса (используя шаблон Adapter)
В пятой части мы реализовали логику сервиса и репозитория
В шестой части был реализован автоматический перехват ошибок
В седьмой части были проверены все API и ExceptionHandler
В восьмой части была настроена обработка ошибок валидатора

В этой статье мы добавим логер в наше приложение.

Для простого логирования достаточно просто создать логгер и все. Мы же хотим, что бы наши логи сохранялись в отдельный файл, и выводились на консоль. В этом случае в консоли будут видны текущие логи, а если возникнет необходимость узнать что происходило раньше, и почему приложение упало, мы сможем открыть файл и посмотреть.

Добавление логирования.

Подробно о томЕ, почему как и зачем добавляется логирование в Java-Spring проект можно посмотреть в отдельной статье по ссылке

Итак — выполняем действия из статьи.

Отключаем дефлотный логбэк и добавляем log4j2

в pom.xml

Добавляем log4j2.xml в папку resources

Настраиваем логирование в файле log4j2.xml

Логер настроен, осталось только прописать его везде, где он нам нужен. Сделаем это в классе ItemServiceImpl

  1. Создаем переменную LOGGER
    private static final Logger LOGGER = LogManager.getLogger(ItemServiceImpl.class);
  2. Добавляем логирование во всех методах

Это пример одного измененного метода. Посмотреть все логирование можно открыв код на github.

Запускаем приложение и смотрим что происходит.

  1. в корневой папке проекта была создана папка logs

2. в папке logs появился файл

3. если открыть файл — то мы увидим, что он полностью дублирует консоль

Попробуем теперь создать объект в postman

смотрим логи — и не видим в них ничего нового…

Проблема в том, что в файле log4j2.xml мы перехватываем логи начиная с уровня info, а в коде прописываем уровень debug. Нужно или в настройках изменить код на debug (но тогда мы увидим очень много лишней информации) или в кое писать логи на уровне info

исправляем код, создаем еще раз обьект — и видим в логах

смотрим в файле — видим там ту же запись.

Логирование работает. Пир желании можно настроить, например файл — перехватывающий все логи начиная с уровня debug, а консоль — с уровня info.

Код можно посмотреть по ссылке https://github.com/natalyaKh/items/tree/logging

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response