Журналирование. Отправка файлов на сервер

Журналирование работы приложения #

Документация #

Задача № 1. Реализация журналирования #

Реализуйте журналирование запросов от пользователя. В журнале приложения должна сохраняться следующая информация:

  • Информация о запросе:
    • Метод запроса.
    • Путь запроса.
    • Адрес клиента.
  • Информация об ответе:
    • Статус ответа.
    • Время формирования ответа.

Данные должны попадать в журнал, расположенный в рабочем каталоге приложения в подкаталоге logs. Файлы журнала должны ротироваться, занимать не более 100 мегабайт на жёстком диске.

Рекомендуется записывать журналы в формате, удобном для машинной обработке. Например в JSON.

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

Ключевые шаги по реализации перечислены ниже.

  • Добавьте в приложение зависимость от библиотек, предоставляемых проектами SLF4J и Logback.
  • Добавьте конфигурацию Logbapck по записи данных в файлы журналов.
  • Реализуйте фильтр приложения, который будет записывать необходимую по заданию информацию в журнал.
  • Добавьте дополнительные сообщения в журнал.

Отправка файлов на сервер #

Документация #

Задача № 2. Загрузка изображений треугольников #

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

Файлы, загруженные пользователем, должны хранится на файловой системе.

Внимание. Если приложеине сохраняет данные на файловую систему, то эти данные должны быть переданы вместе с исходными кодами приложения на проверку.

Ключевые шаги по реализации перечислены ниже.

  • Добавьте к треугольнику ещё одно необязательное поле — путь к файлу с изображением треугольника.
  • Добавьте в приложение зависимость от библиотеки http4k, позволяющей работать с формами, отправляющие данные в виде файлов.
  • Добавьте на форму добавления (и редактирования) данных поле для указания пути к файлу с изображениями.
  • В обработчиках на добавление (и редактирование) замените линзы, работающие с обычными формами, на следующие классы:
    • Линза для конкретного поля строится относительно класса MultipartFormField
    • Линза для конкретного поля с файлами строится относительно класса MultipartFormFile
    • Линза для формы с большим объёмом данных строится с помощью функции-расширения Body.multipartForm
  • Для описания результатов применения линзы для формы с файлами применяется класс MultipartForm. Данный класс содержит помимо информации об обычных полях и ошибках также и информацию о списке переданных файлов.
  • Модифицируйте модели и соответствующие шаблоны Pebble, чтобы они могли получать данные из объектов MultipartForm вместо WebForm.
  • Сохраняйте файлы, пришедшие от пользователя в каталог uploads, находящийся в рабочем каталоге приложения.
  • Добавьте в приложение раздачу статических файлов из данного каталога.
  • Модифицируйте Pebble-шаблон страницы для отображения конкретного треугольника, чтобы он формировал HTML-элемент для отображения загруженного пользователем треугольника.

© A. M. Васильев, 2024, CC BY-SA 4.0, andrey@crafted.su