diff --git a/services/filestore/app.js b/services/filestore/app.js index 91804e186f..9b78de99ad 100644 --- a/services/filestore/app.js +++ b/services/filestore/app.js @@ -16,8 +16,7 @@ const RequestLogger = require('./app/js/RequestLogger') const app = express() -const requestLogger = new RequestLogger() -requestLogger.attach(app) +RequestLogger.attach(app) if (settings.sentry && settings.sentry.dsn) { logger.initializeErrorReporting(settings.sentry.dsn) diff --git a/services/filestore/app/js/RequestLogger.js b/services/filestore/app/js/RequestLogger.js index e8870cda2e..89622f118c 100644 --- a/services/filestore/app/js/RequestLogger.js +++ b/services/filestore/app/js/RequestLogger.js @@ -3,25 +3,10 @@ const metrics = require('metrics-sharelatex') class RequestLogger { constructor() { - this.errorHandler = this.errorHandler.bind(this) - this.middleware = this.middleware.bind(this) this._logInfo = {} this._logMessage = 'http request' } - attach(app) { - app.use(this.middleware) - app.use(this.errorHandler) - } - - errorHandler(err, req, res, next) { - this._logInfo.error = err - res - .send(err.message) - .status(500) - .end() - } - addFields(fields) { Object.assign(this._logInfo, fields) } @@ -30,9 +15,22 @@ class RequestLogger { this._logMessage = message } - middleware(req, res, next) { + static attach(app) { + app.use(RequestLogger.middleware) + app.use(RequestLogger.errorHandler) + } + + static errorHandler(err, req, res, next) { + this._logInfo.error = err + res + .send(err.message) + .status(500) + .end() + } + + static middleware(req, res, next) { const startTime = new Date() - req.requestLogger = this + req.requestLogger = new RequestLogger() // override the 'end' method to log and record metrics const end = res.end @@ -77,9 +75,9 @@ class RequestLogger { statusCode: res.statusCode, 'response-time': responseTime }, - info: this._logInfo + info: req.requestLogger._logInfo }, - this._logMessage + req.requestLogger._logMessage ) }