http.coffee 989 B

12345678910111213141516171819202122232425262728293031
  1. os = require("os")
  2. module.exports.monitor = (logger) ->
  3. return (req, res, next) ->
  4. Metrics = require("./metrics")
  5. startTime = new Date()
  6. end = res.end
  7. res.end = () ->
  8. end.apply(this, arguments)
  9. responseTime = new Date() - startTime
  10. if req.route?.path?
  11. routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1)
  12. key = "http-requests.#{routePath}.#{req.method}.#{res.statusCode}"
  13. Metrics.timing(key, responseTime)
  14. logger.log
  15. req:
  16. url: req.originalUrl || req.url
  17. method: req.method
  18. referrer: req.headers['referer'] || req.headers['referrer']
  19. "remote-addr": req.ip || req.socket?.socket?.remoteAddress || req.socket?.remoteAddress
  20. "user-agent": req.headers["user-agent"]
  21. "content-length": req.headers["content-length"]
  22. res:
  23. "content-length": res._headers?["content-length"]
  24. statusCode: res.statusCode
  25. "response-time": responseTime
  26. "http request"
  27. next()