-
Notifications
You must be signed in to change notification settings - Fork 1
/
log.ts
executable file
·40 lines (35 loc) · 934 Bytes
/
log.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import Logger from 'bunyan'
import type { ResponseError } from 'superagent'
import config from './server/config'
const level = (() => {
if (config.production) {
return 'info'
}
if (config.testMode) {
return 'fatal'
}
return 'debug'
})()
function responseErrorSerializer(err: ResponseError) {
const baseErr = Logger.stdSerializers.err(err)
return err.response
? {
...baseErr,
text: err.response.text,
status: err.response.status,
headers: err.response.headers,
data: err.response.body,
}
: baseErr
}
export function loggerFactory(fields: { [custom: string]: unknown } = {}, name = 'interventions'): Logger {
return Logger.createLogger({
name,
level,
stream: process.stdout,
serializers: { ...Logger.stdSerializers, err: responseErrorSerializer },
...fields,
})
}
const defaultLogger = loggerFactory()
export default defaultLogger