Данный проект написан с целью изучения особенностей Spring'a. Представляет собой систему логгирования.
- Класс Client содержит поля id, fullName(Полное имя), greeting(Строка приветствия);
- Класс Event содержит поля id, msg(Сообщение события), date;
- EventType - Перечисление, отражающее возможный тип события(INFO/ERROR).
- ConsoleEventLogger - выводит информацию о событиях на консоль;
- FileEventLogger - ввыводит информацию о событиях в файл log.txt;
- CacheFileEventLogger - FileEventLogger, который сначалa добавляет события в cache, а потом уже выводит в файл;
- DBLogger - выводит информацию о событиях в базу данных. Также сохраняет в БД id последних залоггированных событий, что необходимо для корректной работы программы при последующих запусках. Логгирование происходит путём вызова метода logEvent у необходимого логгера.
Если в сообщении события содержится id клиента, оно заменяется на его полное имя, а также все события обрабатываются разными логгерами в зависимости от их типа:
- EventType.INFO - ConsoleEventLogger;
- EventType.ERROR - CombinedEventLogger, который включает в себя ConsoleEventLogger, FileEventLogger и DBLogger;
- null - вызывается логгер по умолчанию, который устанавливается в зависимости от времени суток(ConsoleEventLogger/CacheFileEventLogger).
Также в проекте присутствуют аспекты:
- ConsoleLoggerLimitAspect - Отслеживает, не достигло ли количество залоггированных событий логгером ConsoleEventLogger максимально установленного значения. А в случае достижения перенаправляет логгирование этих событий другому установленному логгеру.
- StatisticsAspect - Отслеживает и сохраняет количество залоггированных событий для каждого логгера.