-
Notifications
You must be signed in to change notification settings - Fork 3
Home
на 1й взгляд класс должен выглядеть как:
case class Log(
id: Option[UUID],
env: String
`class`: String,
tmp: Timestamp,
message: String,
cause: String,
stackTrace: String
)
Логи постуают в систему через http/tcp слой (Log class), нужно сохранить эти данные в rethink, для этого, используя shapeless написать конвертер из Log класса в модель rethink (java.util.HashMap) Используя scala macro написать обратный конвертер конвертер из j.u.HM в Log
пользователь должен видеть на ui, последние N записей, написать используя scala macro filter для Log class: logsDb.filter(l => filter-function)
нужна возможность делать запросы для сохранённых записей
примерная грамматика выглядит как:
query = left operation right
left = field_name from Log class
operation = '=', '!=', 'contains'
right = left | bool_op
bool_op = AND | OR
examples: env = 'prodaction' env = 'production' AND message contains 'Failed to'
NOTE: про приоритеты думать не нужно
при изменениях в базе (новых записях) нужно пушить эти изменения на ui с помощью вебсокетов
для ui нужно построить графики по частоте Execption, за 24h, 2d, 3d, 7d
для запросов нужно использовать scala-macro функции вида: dbLogs.filter(x => x.timestamp > ...)