]>
Commit | Line | Data |
---|---|---|
1 | import omit from 'lodash-es/omit' | |
2 | import { logger } from '@root-helpers/logger' | |
3 | import { ServerLogLevel } from '@shared/models' | |
4 | ||
5 | export class LogRow { | |
6 | date: Date | |
7 | localeDate: string | |
8 | level: ServerLogLevel | |
9 | message: string | |
10 | meta: string | |
11 | ||
12 | by: string | |
13 | domain: string | |
14 | action: string | |
15 | ||
16 | constructor (row: any) { | |
17 | this.date = new Date(row.timestamp) | |
18 | this.localeDate = this.date.toLocaleString() | |
19 | this.level = row.level | |
20 | this.message = row.message | |
21 | ||
22 | const metaObj = omit(row, 'timestamp', 'level', 'message', 'label') | |
23 | ||
24 | if (Object.keys(metaObj).length !== 0) this.meta = JSON.stringify(metaObj, undefined, 2) | |
25 | ||
26 | if (row.level === 'audit') { | |
27 | try { | |
28 | const message = JSON.parse(row.message) | |
29 | ||
30 | this.by = message.user | |
31 | this.domain = message.domain | |
32 | this.action = message.action | |
33 | ||
34 | this.meta = JSON.stringify(message, null, 2) | |
35 | this.message = '' | |
36 | } catch (err) { | |
37 | logger.error('Cannot parse audit message.', err) | |
38 | } | |
39 | } | |
40 | } | |
41 | } |