http.coffee 1000 B

1234567891011121314151617181920212223242526272829
  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. Metrics.timing("http_request", responseTime, null, {method:req.method, status_code: res.statusCode, path:routePath})
  13. logger.log
  14. req:
  15. url: req.originalUrl || req.url
  16. method: req.method
  17. referrer: req.headers['referer'] || req.headers['referrer']
  18. "remote-addr": req.ip || req.socket?.socket?.remoteAddress || req.socket?.remoteAddress
  19. "user-agent": req.headers["user-agent"]
  20. "content-length": req.headers["content-length"]
  21. res:
  22. "content-length": res._headers?["content-length"]
  23. statusCode: res.statusCode
  24. "response-time": responseTime
  25. "http request"
  26. next()