mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 10:33:51 -05:00
32 lines
989 B
CoffeeScript
32 lines
989 B
CoffeeScript
|
os = require("os")
|
||
|
|
||
|
module.exports.monitor = (logger) ->
|
||
|
return (req, res, next) ->
|
||
|
Metrics = require("./metrics")
|
||
|
startTime = new Date()
|
||
|
end = res.end
|
||
|
res.end = () ->
|
||
|
end.apply(this, arguments)
|
||
|
responseTime = new Date() - startTime
|
||
|
if req.route?.path?
|
||
|
routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1)
|
||
|
key = "http-requests.#{routePath}.#{req.method}.#{res.statusCode}"
|
||
|
|
||
|
Metrics.timing(key, responseTime)
|
||
|
logger.log
|
||
|
req:
|
||
|
url: req.originalUrl || req.url
|
||
|
method: req.method
|
||
|
referrer: req.headers['referer'] || req.headers['referrer']
|
||
|
"remote-addr": req.ip || req.socket?.socket?.remoteAddress || req.socket?.remoteAddress
|
||
|
"user-agent": req.headers["user-agent"]
|
||
|
"content-length": req.headers["content-length"]
|
||
|
res:
|
||
|
"content-length": res._headers?["content-length"]
|
||
|
statusCode: res.statusCode
|
||
|
"response-time": responseTime
|
||
|
"http request"
|
||
|
|
||
|
next()
|
||
|
|