Журналирование работы приложения #
Документация #
Задача № 1. Реализация журналирования #
Реализуйте журналирование запросов от пользователя. В журнале приложения должна сохраняться следующая информация:
- Информация о запросе:
- Метод запроса.
- Путь запроса.
- Адрес клиента.
- Информация об ответе:
- Статус ответа.
- Время формирования ответа.
Данные должны попадать в журнал, расположенный в рабочем каталоге приложения в подкаталоге logs
. Файлы журнала должны ротироваться, занимать не более 100 мегабайт на жёстком диске.
Рекомендуется записывать журналы в формате, удобном для машинной обработке. Например в JSON.
Внимание. Журналы приложения не должны попасть в набор исходных кодов приложения, отправляемых в качестве результата проверочной работы.
Ключевые шаги по реализации перечислены ниже.
- Добавьте в приложение зависимость от библиотек, предоставляемых проектами SLF4J и Logback.
- Добавьте конфигурацию Logbapck по записи данных в файлы журналов.
- Реализуйте фильтр приложения, который будет записывать необходимую по заданию информацию в журнал.
- Добавьте дополнительные сообщения в журнал.
Отправка файлов на сервер #
Документация #
Задача № 2. Загрузка изображений треугольников #
Реализуйте возможность пользователю прикреплять изображения к треугольникам. Изображение должно стать опциональной информацией о треугольниках в системе, т.е. пользователь может указать, а может и не указывать данное значение.
Файлы, загруженные пользователем, должны хранится на файловой системе.
Внимание. Если приложеине сохраняет данные на файловую систему, то эти данные должны быть переданы вместе с исходными кодами приложения на проверку.
Ключевые шаги по реализации перечислены ниже.
- Добавьте к треугольнику ещё одно необязательное поле — путь к файлу с изображением треугольника.
- Добавьте в приложение зависимость от библиотеки http4k, позволяющей работать с формами, отправляющие данные в виде файлов.
- Добавьте на форму добавления (и редактирования) данных поле для указания пути к файлу с изображениями.
- В обработчиках на добавление (и редактирование) замените линзы, работающие с обычными формами, на следующие классы:
- Линза для конкретного поля строится относительно класса MultipartFormField
- Линза для конкретного поля с файлами строится относительно класса MultipartFormFile
- Линза для формы с большим объёмом данных строится с помощью функции-расширения Body.multipartForm
- Для описания результатов применения линзы для формы с файлами применяется класс MultipartForm. Данный класс содержит помимо информации об обычных полях и ошибках также и информацию о списке переданных файлов.
- Модифицируйте модели и соответствующие шаблоны Pebble, чтобы они могли получать данные из объектов MultipartForm вместо WebForm.
- Сохраняйте файлы, пришедшие от пользователя в каталог
uploads
, находящийся в рабочем каталоге приложения. - Добавьте в приложение раздачу статических файлов из данного каталога.
- Модифицируйте Pebble-шаблон страницы для отображения конкретного треугольника, чтобы он формировал HTML-элемент для отображения загруженного пользователем треугольника.