From 5495a95d867b5e6bfa77daaa3e8e65eaf36de537 Mon Sep 17 00:00:00 2001 From: Matthias Pfeil Date: Fri, 9 Aug 2024 14:46:44 +0200 Subject: [PATCH 1/3] update pinojs --- packages/api/app.js | 8 ++----- packages/api/package.json | 2 +- yarn.lock | 49 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/packages/api/app.js b/packages/api/app.js index 2ab35628..06e9f6e9 100644 --- a/packages/api/app.js +++ b/packages/api/app.js @@ -17,10 +17,7 @@ const config = require('config'), { preRequest, preCors, Honeybadger, getVersion, postToMattermost } = require('./lib/helpers/apiUtils'), routes = require('./lib/routes'), - pino = require('pino'); - -// const log = bunyan.createLogger({ name: 'opensensemap-api', serializers: bunyan.stdSerializers }); -const log = pino({ name: 'opensensemap-api', sserializers: pino.stdSerializers }); + log = require('pino')({ name: 'opensensemap-api' }); const server = restify.createServer({ name: `opensensemap-api (${getVersion})`, @@ -55,8 +52,7 @@ db.connect() }); }) .catch(function (err) { - log.fatal(err, `Couldn't connect to MongoDB. - Exiting...`); + log.fatal(err, 'Couldn\'t connect to MongoDB. Exiting...'); process.exit(1); }); diff --git a/packages/api/package.json b/packages/api/package.json index adf6a99a..87e05355 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -32,7 +32,7 @@ "millify": "^6.1.0", "moment": "^2.29.4", "ms": "^2.1.3", - "pino": "^8.8.0", + "pino": "^9.3.2", "restify": "11.1.0", "restify-errors": "^8.0.2", "simple-statistics": "^7.7.0", diff --git a/yarn.lock b/yarn.lock index 88d1a9fe..a66cf586 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2928,6 +2928,14 @@ pidusage@^3.0.2: dependencies: safe-buffer "^5.2.1" +pino-abstract-transport@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + pino-abstract-transport@v1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" @@ -2941,6 +2949,11 @@ pino-std-serializers@^6.0.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz#307490fd426eefc95e06067e85d8558603e8e844" integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g== +pino-std-serializers@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" + integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== + pino@^8.7.0: version "8.15.0" resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.0.tgz#67c61d5e397bf297e5a0433976a7f7b8aa6f876b" @@ -2975,6 +2988,23 @@ pino@^8.8.0: sonic-boom "^3.1.0" thread-stream "^2.0.0" +pino@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.2.tgz#a530d6d28f1d954b6f54416a218cbb616f52f901" + integrity sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.1.1" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.2.0" + pino-std-serializers "^7.0.0" + process-warning "^4.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" + polygon-clipping@^0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/polygon-clipping/-/polygon-clipping-0.15.3.tgz#0215840438470ba2e9e6593625e4ea5c1087b4b7" @@ -3007,6 +3037,11 @@ process-warning@^2.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.1.0.tgz#1e60e3bfe8183033bbc1e702c2da74f099422d1a" integrity sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg== +process-warning@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a" + integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw== + process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -3482,6 +3517,13 @@ sonic-boom@^3.1.0: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.0.1.tgz#515b7cef2c9290cb362c4536388ddeece07aed30" + integrity sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ== + dependencies: + atomic-sleep "^1.0.0" + source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3738,6 +3780,13 @@ thread-stream@^2.0.0: dependencies: real-require "^0.2.0" +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== + dependencies: + real-require "^0.2.0" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" From b2bfdd136a7027f1fb3bbbb621453f31f28cfeb5 Mon Sep 17 00:00:00 2001 From: Matthias Pfeil Date: Fri, 9 Aug 2024 16:00:56 +0200 Subject: [PATCH 2/3] dont return res.send --- packages/api/lib/controllers/usersController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/api/lib/controllers/usersController.js b/packages/api/lib/controllers/usersController.js index 635591d6..4b8d77e1 100644 --- a/packages/api/lib/controllers/usersController.js +++ b/packages/api/lib/controllers/usersController.js @@ -64,7 +64,7 @@ const registerUser = async function registerUser (req, res) { try { const { token, refreshToken } = await createToken(newUser); - return res.send(201, { + res.send(201, { code: 'Created', message: 'Successfully registered new user', data: { user: newUser }, @@ -115,7 +115,7 @@ const signIn = async function signIn (req, res) { if (await user.checkPassword(password)) { const { token, refreshToken } = await createToken(user); - return res.send(200, { + res.send(200, { code: 'Authorized', message: 'Successfully signed in', data: { user }, From bda0e2d831f2670ba4cf99f2ff3ac56eb2f8f28b Mon Sep 17 00:00:00 2001 From: Matthias Pfeil Date: Mon, 12 Aug 2024 12:51:46 +0200 Subject: [PATCH 3/3] add logger for debugging purposes --- config/default.js | 1 + packages/api/app.js | 31 ++++++++++++++++++++++--------- packages/api/logger.js | 21 +++++++++++++++++++++ packages/api/package.json | 1 + yarn.lock | 17 ++++++++++++++++- 5 files changed, 61 insertions(+), 10 deletions(-) create mode 100644 packages/api/logger.js diff --git a/config/default.js b/config/default.js index 094ca8db..224c4ea5 100644 --- a/config/default.js +++ b/config/default.js @@ -15,6 +15,7 @@ const defaults = { slack_url: '', mattermost_url: '', management_role: 'admin', + logLevel: 'info', routes: { boxes: '/boxes', users: '/users', diff --git a/packages/api/app.js b/packages/api/app.js index 06e9f6e9..762e5580 100644 --- a/packages/api/app.js +++ b/packages/api/app.js @@ -10,18 +10,27 @@ 'use strict'; -const - { db } = require('@sensebox/opensensemap-api-models'), +const { db } = require('@sensebox/opensensemap-api-models'), restify = require('restify'), - { fullResponse, queryParser, jsonBodyParser, pre: { sanitizePath } } = restify.plugins, + { + fullResponse, + queryParser, + jsonBodyParser, + pre: { sanitizePath } + } = restify.plugins, config = require('config'), - { preRequest, preCors, Honeybadger, getVersion, postToMattermost } = require('./lib/helpers/apiUtils'), + { + preRequest, + preCors, + Honeybadger, + getVersion, + postToMattermost + } = require('./lib/helpers/apiUtils'), routes = require('./lib/routes'), - log = require('pino')({ name: 'opensensemap-api' }); + { stdLogger, debugLogger } = require('./logger'); const server = restify.createServer({ name: `opensensemap-api (${getVersion})`, - log, onceNext: true, strictNext: false, }); @@ -40,6 +49,10 @@ server.use(fullResponse()); server.use(queryParser()); server.use(jsonBodyParser()); +if (config.get('logLevel') === 'debug') { + server.use(debugLogger); +} + db.connect() .then(function () { // attach Routes @@ -47,12 +60,12 @@ db.connect() // start the server server.listen(Number(config.get('port')), function () { - log.info(`${server.name} listening at ${server.url}`); + stdLogger.logger.info(`${server.name} listening at ${server.url}`); postToMattermost(`openSenseMap API started. Version: ${getVersion}`); }); }) .catch(function (err) { - log.fatal(err, 'Couldn\'t connect to MongoDB. Exiting...'); + stdLogger.logger.fatal(err, 'Couldn\'t connect to MongoDB. Exiting...'); process.exit(1); }); @@ -71,7 +84,7 @@ server.on('InternalServer', function (req, res, err, callback) { query: req.query, _userParams: req._userParams }); - log.error(err); + stdLogger.logger.error(err); // and notify Honeybadger.notify(err); diff --git a/packages/api/logger.js b/packages/api/logger.js new file mode 100644 index 00000000..39f68f20 --- /dev/null +++ b/packages/api/logger.js @@ -0,0 +1,21 @@ +'use strict'; + +const config = require('config'); +const pino = require('pino-http'); + + +module.exports = { + stdLogger: pino({ name: 'opensensemap-api' }), + debugLogger: pino({ + name: 'opensensemap-api-debug', + serializers: { + req (req) { + if (config.get('logLevel') === 'debug') { + req.body = req.raw.body; + } + + return req; + } + } + }) +}; diff --git a/packages/api/package.json b/packages/api/package.json index 87e05355..e8f6d287 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,6 +33,7 @@ "moment": "^2.29.4", "ms": "^2.1.3", "pino": "^9.3.2", + "pino-http": "^10.2.0", "restify": "11.1.0", "restify-errors": "^8.0.2", "simple-statistics": "^7.7.0", diff --git a/yarn.lock b/yarn.lock index a66cf586..820fddf4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2944,6 +2944,16 @@ pino-abstract-transport@v1.0.0: readable-stream "^4.0.0" split2 "^4.0.0" +pino-http@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-10.2.0.tgz#157b799e84ee4f6fe5a862fa3758f10d25376fed" + integrity sha512-am03BxnV3Ckx68OkbH0iZs3indsrH78wncQ6w1w51KroIbvJZNImBKX2X1wjdY8lSyaJ0UrX/dnO2DY3cTeCRw== + dependencies: + get-caller-file "^2.0.5" + pino "^9.0.0" + pino-std-serializers "^7.0.0" + process-warning "^3.0.0" + pino-std-serializers@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz#307490fd426eefc95e06067e85d8558603e8e844" @@ -2988,7 +2998,7 @@ pino@^8.8.0: sonic-boom "^3.1.0" thread-stream "^2.0.0" -pino@^9.3.2: +pino@^9.0.0, pino@^9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.2.tgz#a530d6d28f1d954b6f54416a218cbb616f52f901" integrity sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw== @@ -3037,6 +3047,11 @@ process-warning@^2.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.1.0.tgz#1e60e3bfe8183033bbc1e702c2da74f099422d1a" integrity sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg== +process-warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b" + integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== + process-warning@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a"