logging-manager.coffee 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. bunyan = require('bunyan')
  2. module.exports = Logger =
  3. initialize: (name) ->
  4. @logger = bunyan.createLogger
  5. name: name
  6. serializers: bunyan.stdSerializers
  7. return @
  8. initializeErrorReporting: (sentry_dsn, options) ->
  9. raven = require "raven"
  10. @raven = new raven.Client(sentry_dsn, options)
  11. info : ()->
  12. @logger.info.apply(@logger, arguments)
  13. log : ()->
  14. @logger.info.apply(@logger, arguments)
  15. error: (attributes, args...)->
  16. @logger.error(attributes, args...)
  17. if @raven?
  18. error = attributes.err or attributes.error
  19. req = attributes.req
  20. if error?
  21. tags = {}
  22. extra = {}
  23. for key, value of attributes
  24. tags[key] = value if key.match(/_id/) and typeof value == 'string'
  25. extra[key] = value
  26. if req?
  27. extra.req =
  28. method: req.method
  29. url: req.originalUrl
  30. query: req.query
  31. headers: req.headers
  32. ip: req.ip
  33. @raven.captureError(error, {tags: tags, extra: extra})
  34. err: ()->
  35. @logger.error.apply(@logger, arguments)
  36. warn: ()->
  37. @logger.warn.apply(@logger, arguments)
  38. Logger.initialize("default-sharelatex")