Skip to content

Commit f9dc662

Browse files
authored
chore: add logger for debugging purposes (#887)
* update pinojs * dont return res.send * add logger for debugging purposes
1 parent 29b7acf commit f9dc662

File tree

6 files changed

+112
-16
lines changed

6 files changed

+112
-16
lines changed

config/default.js

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const defaults = {
1515
slack_url: '',
1616
mattermost_url: '',
1717
management_role: 'admin',
18+
logLevel: 'info',
1819
routes: {
1920
boxes: '/boxes',
2021
users: '/users',

packages/api/app.js

+22-13
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,27 @@
1010

1111
'use strict';
1212

13-
const
14-
{ db } = require('@sensebox/opensensemap-api-models'),
13+
const { db } = require('@sensebox/opensensemap-api-models'),
1514
restify = require('restify'),
16-
{ fullResponse, queryParser, jsonBodyParser, pre: { sanitizePath } } = restify.plugins,
15+
{
16+
fullResponse,
17+
queryParser,
18+
jsonBodyParser,
19+
pre: { sanitizePath }
20+
} = restify.plugins,
1721
config = require('config'),
18-
{ preRequest, preCors, Honeybadger, getVersion, postToMattermost } = require('./lib/helpers/apiUtils'),
22+
{
23+
preRequest,
24+
preCors,
25+
Honeybadger,
26+
getVersion,
27+
postToMattermost
28+
} = require('./lib/helpers/apiUtils'),
1929
routes = require('./lib/routes'),
20-
pino = require('pino');
21-
22-
// const log = bunyan.createLogger({ name: 'opensensemap-api', serializers: bunyan.stdSerializers });
23-
const log = pino({ name: 'opensensemap-api', sserializers: pino.stdSerializers });
30+
{ stdLogger, debugLogger } = require('./logger');
2431

2532
const server = restify.createServer({
2633
name: `opensensemap-api (${getVersion})`,
27-
log,
2834
onceNext: true,
2935
strictNext: false,
3036
});
@@ -43,20 +49,23 @@ server.use(fullResponse());
4349
server.use(queryParser());
4450
server.use(jsonBodyParser());
4551

52+
if (config.get('logLevel') === 'debug') {
53+
server.use(debugLogger);
54+
}
55+
4656
db.connect()
4757
.then(function () {
4858
// attach Routes
4959
routes(server);
5060

5161
// start the server
5262
server.listen(Number(config.get('port')), function () {
53-
log.info(`${server.name} listening at ${server.url}`);
63+
stdLogger.logger.info(`${server.name} listening at ${server.url}`);
5464
postToMattermost(`openSenseMap API started. Version: ${getVersion}`);
5565
});
5666
})
5767
.catch(function (err) {
58-
log.fatal(err, `Couldn't connect to MongoDB.
59-
Exiting...`);
68+
stdLogger.logger.fatal(err, 'Couldn\'t connect to MongoDB. Exiting...');
6069
process.exit(1);
6170
});
6271

@@ -75,7 +84,7 @@ server.on('InternalServer', function (req, res, err, callback) {
7584
query: req.query,
7685
_userParams: req._userParams
7786
});
78-
log.error(err);
87+
stdLogger.logger.error(err);
7988
// and notify
8089
Honeybadger.notify(err);
8190

packages/api/lib/controllers/usersController.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ const registerUser = async function registerUser (req, res) {
6464
try {
6565
const { token, refreshToken } = await createToken(newUser);
6666

67-
return res.send(201, {
67+
res.send(201, {
6868
code: 'Created',
6969
message: 'Successfully registered new user',
7070
data: { user: newUser },
@@ -115,7 +115,7 @@ const signIn = async function signIn (req, res) {
115115
if (await user.checkPassword(password)) {
116116
const { token, refreshToken } = await createToken(user);
117117

118-
return res.send(200, {
118+
res.send(200, {
119119
code: 'Authorized',
120120
message: 'Successfully signed in',
121121
data: { user },

packages/api/logger.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const config = require('config');
4+
const pino = require('pino-http');
5+
6+
7+
module.exports = {
8+
stdLogger: pino({ name: 'opensensemap-api' }),
9+
debugLogger: pino({
10+
name: 'opensensemap-api-debug',
11+
serializers: {
12+
req (req) {
13+
if (config.get('logLevel') === 'debug') {
14+
req.body = req.raw.body;
15+
}
16+
17+
return req;
18+
}
19+
}
20+
})
21+
};

packages/api/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
"millify": "^6.1.0",
3333
"moment": "^2.29.4",
3434
"ms": "^2.1.3",
35-
"pino": "^8.8.0",
35+
"pino": "^9.3.2",
36+
"pino-http": "^10.2.0",
3637
"restify": "11.1.0",
3738
"restify-errors": "^8.0.2",
3839
"simple-statistics": "^7.7.0",

yarn.lock

+64
Original file line numberDiff line numberDiff line change
@@ -2928,6 +2928,14 @@ pidusage@^3.0.2:
29282928
dependencies:
29292929
safe-buffer "^5.2.1"
29302930

2931+
pino-abstract-transport@^1.2.0:
2932+
version "1.2.0"
2933+
resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5"
2934+
integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==
2935+
dependencies:
2936+
readable-stream "^4.0.0"
2937+
split2 "^4.0.0"
2938+
29312939
29322940
version "1.0.0"
29332941
resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3"
@@ -2936,11 +2944,26 @@ [email protected]:
29362944
readable-stream "^4.0.0"
29372945
split2 "^4.0.0"
29382946

2947+
pino-http@^10.2.0:
2948+
version "10.2.0"
2949+
resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-10.2.0.tgz#157b799e84ee4f6fe5a862fa3758f10d25376fed"
2950+
integrity sha512-am03BxnV3Ckx68OkbH0iZs3indsrH78wncQ6w1w51KroIbvJZNImBKX2X1wjdY8lSyaJ0UrX/dnO2DY3cTeCRw==
2951+
dependencies:
2952+
get-caller-file "^2.0.5"
2953+
pino "^9.0.0"
2954+
pino-std-serializers "^7.0.0"
2955+
process-warning "^3.0.0"
2956+
29392957
pino-std-serializers@^6.0.0:
29402958
version "6.1.0"
29412959
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz#307490fd426eefc95e06067e85d8558603e8e844"
29422960
integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==
29432961

2962+
pino-std-serializers@^7.0.0:
2963+
version "7.0.0"
2964+
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b"
2965+
integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==
2966+
29442967
pino@^8.7.0:
29452968
version "8.15.0"
29462969
resolved "https://registry.yarnpkg.com/pino/-/pino-8.15.0.tgz#67c61d5e397bf297e5a0433976a7f7b8aa6f876b"
@@ -2975,6 +2998,23 @@ pino@^8.8.0:
29752998
sonic-boom "^3.1.0"
29762999
thread-stream "^2.0.0"
29773000

3001+
pino@^9.0.0, pino@^9.3.2:
3002+
version "9.3.2"
3003+
resolved "https://registry.yarnpkg.com/pino/-/pino-9.3.2.tgz#a530d6d28f1d954b6f54416a218cbb616f52f901"
3004+
integrity sha512-WtARBjgZ7LNEkrGWxMBN/jvlFiE17LTbBoH0konmBU684Kd0uIiDwBXlcTCW7iJnA6HfIKwUssS/2AC6cDEanw==
3005+
dependencies:
3006+
atomic-sleep "^1.0.0"
3007+
fast-redact "^3.1.1"
3008+
on-exit-leak-free "^2.1.0"
3009+
pino-abstract-transport "^1.2.0"
3010+
pino-std-serializers "^7.0.0"
3011+
process-warning "^4.0.0"
3012+
quick-format-unescaped "^4.0.3"
3013+
real-require "^0.2.0"
3014+
safe-stable-stringify "^2.3.1"
3015+
sonic-boom "^4.0.1"
3016+
thread-stream "^3.0.0"
3017+
29783018
polygon-clipping@^0.15.3:
29793019
version "0.15.3"
29803020
resolved "https://registry.yarnpkg.com/polygon-clipping/-/polygon-clipping-0.15.3.tgz#0215840438470ba2e9e6593625e4ea5c1087b4b7"
@@ -3007,6 +3047,16 @@ process-warning@^2.0.0:
30073047
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.1.0.tgz#1e60e3bfe8183033bbc1e702c2da74f099422d1a"
30083048
integrity sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==
30093049

3050+
process-warning@^3.0.0:
3051+
version "3.0.0"
3052+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b"
3053+
integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==
3054+
3055+
process-warning@^4.0.0:
3056+
version "4.0.0"
3057+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a"
3058+
integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==
3059+
30103060
process@^0.11.10:
30113061
version "0.11.10"
30123062
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
@@ -3482,6 +3532,13 @@ sonic-boom@^3.1.0:
34823532
dependencies:
34833533
atomic-sleep "^1.0.0"
34843534

3535+
sonic-boom@^4.0.1:
3536+
version "4.0.1"
3537+
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.0.1.tgz#515b7cef2c9290cb362c4536388ddeece07aed30"
3538+
integrity sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==
3539+
dependencies:
3540+
atomic-sleep "^1.0.0"
3541+
34853542
source-map@~0.6.1:
34863543
version "0.6.1"
34873544
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -3738,6 +3795,13 @@ thread-stream@^2.0.0:
37383795
dependencies:
37393796
real-require "^0.2.0"
37403797

3798+
thread-stream@^3.0.0:
3799+
version "3.1.0"
3800+
resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1"
3801+
integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==
3802+
dependencies:
3803+
real-require "^0.2.0"
3804+
37413805
to-regex-range@^5.0.1:
37423806
version "5.0.1"
37433807
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"

0 commit comments

Comments
 (0)