-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathloggers.js
35 lines (29 loc) · 998 Bytes
/
loggers.js
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
const bunyan = require('bunyan')
const uuid = require('uuid').v4
const mainLogger = bunyan.createLogger({name: 'MAPGEN'})
const logRequestMiddleware = (req, res, next) => {
const startTime = process.hrtime.bigint()
req.uuid = uuid()
req.logger = mainLogger.child({component: 'REQUEST', uuid: req.uuid.substr(0, 8)})
req.logger.info({method: req.method, originalUrl: req.originalUrl}, 'Request received')
res.on('finish', function responseSent() {
const endTime = process.hrtime.bigint()
const responseData = {
duration: Number(endTime - startTime) / 1000000,
statusCode: res.statusCode,
statusMessage: res.statusMessage
}
if (res.statusCode < 400) {
req.logger.info(responseData, 'Response sent')
} else if (res.statusCode < 500) {
req.logger.warn(responseData, 'Response sent')
} else {
req.logger.error(responseData, 'Response sent')
}
})
next()
}
module.exports = {
main: mainLogger,
logRequestMiddleware
}