From 6b3e7e4ffc77659354152f466576a7941705e061 Mon Sep 17 00:00:00 2001 From: Miguel Serrano Date: Thu, 11 Jul 2019 12:11:09 +0200 Subject: [PATCH] replace bunyan error serializer with custom one (#14) --- libraries/logger/logging-manager.js | 21 ++++++++++++++++++- libraries/logger/package.json | 1 + .../logger/test/unit/loggingManagerTests.js | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/libraries/logger/logging-manager.js b/libraries/logger/logging-manager.js index cf702ac821..794f23eccb 100644 --- a/libraries/logger/logging-manager.js +++ b/libraries/logger/logging-manager.js @@ -1,5 +1,20 @@ const bunyan = require('bunyan') const request = require('request') +const OError = require('@overleaf/o-error') + +// bunyan error serializer +const errSerializer = function (err) { + if (!err || !err.stack) + return err; + return { + message: err.message, + name: err.name, + stack: OError.getFullStack(err), + info: OError.getFullInfo(err), + code: err.code, + signal: err.signal + }; +}; const Logger = module.exports = { initialize(name) { @@ -28,7 +43,11 @@ const Logger = module.exports = { } this.logger = bunyan.createLogger({ name, - serializers: bunyan.stdSerializers, + serializers: { + err: errSerializer, + req: bunyan.stdSerializers.req, + res: bunyan.stdSerializers.res + }, streams: loggerStreams }) if (this.isProduction) { diff --git a/libraries/logger/package.json b/libraries/logger/package.json index 381905ff23..0e15917c4a 100644 --- a/libraries/logger/package.json +++ b/libraries/logger/package.json @@ -14,6 +14,7 @@ "lint": "eslint -f unix ." }, "dependencies": { + "@overleaf/o-error": "^2.0.0", "bunyan": "1.8.12", "raven": "1.1.3", "request": "2.88.0" diff --git a/libraries/logger/test/unit/loggingManagerTests.js b/libraries/logger/test/unit/loggingManagerTests.js index dc8ac244b2..d3714635df 100644 --- a/libraries/logger/test/unit/loggingManagerTests.js +++ b/libraries/logger/test/unit/loggingManagerTests.js @@ -28,7 +28,7 @@ describe('LoggingManager', function() { once: sinon.stub().yields() } this.LoggingManager = SandboxedModule.require(modulePath, { - globals: { console }, + globals: { console, process }, requires: { bunyan: (this.Bunyan = { createLogger: sinon.stub().returns(this.mockBunyanLogger),