Skip to content

Commit ab47a48

Browse files
committed
Integrate rollbar in the custom logger
1 parent fe4f16b commit ab47a48

File tree

5 files changed

+125
-3
lines changed

5 files changed

+125
-3
lines changed

.env.test

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Make sure tests don't use a valid Storyblok token - this way, any access to Storyblok will error out and force us to mock out the interaction.
22
STORYBLOK_TOKEN=noop
33

4-
CONTENT_EDITOR_EMAILS=
4+
CONTENT_EDITOR_EMAILS=
5+
6+
ROLLBAR_TOKEN=false
7+
ROLLBAR_ENV=local-test

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ STORYBLOK_TOKEN={value} # The API token from Storyblok (must have 'draft' acces
2525
FIREBASE_SERVICE_ACCOUNT={value} # The service account JSON object serialised into a string and then base64 encoded
2626

2727
CONTENT_EDITOR_EMAILS={value} # Optional. A comma separated list of email addresses of the users that are allowed to access preview mode (for viewing draft content from Storyblok)
28+
29+
ROLLBAR_TOKEN={value} # Optional when running in `dev` mode. Either set this to the Rollbar server token, or to `false` to disable.
30+
ROLLBAR_ENV=local-dev # Required in `production` mode or if `ROLLBAR_TOKEN` is set.
2831
```
2932

3033
#### Env config for tests

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"nanoid": "^3.1.12",
3333
"reflect-metadata": "^0.1.13",
3434
"rimraf": "^3.0.2",
35+
"rollbar": "^2.19.3",
3536
"rxjs": "^6.6.3",
3637
"storyblok-js-client": "^3.1.0"
3738
},

src/logger/logger.ts

+36
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,44 @@
11
import { Logger as NestLogger } from '@nestjs/common';
2+
import Rollbar from 'rollbar';
23

34
export class Logger extends NestLogger {
5+
private rollbar?: Rollbar;
6+
7+
constructor(context?: string, isTimestampEnabled?: boolean) {
8+
super(context, isTimestampEnabled);
9+
10+
this.initialiseRollbar();
11+
}
12+
413
error(message: string, trace?: string): void {
14+
if (this.rollbar) {
15+
this.rollbar.error(message);
16+
}
17+
518
const taggedMessage = `[error] ${message}`;
619
super.error(taggedMessage, trace);
720
}
21+
22+
private initialiseRollbar() {
23+
const rollbarEnv = process.env.ROLLBAR_ENV;
24+
const rollbarToken = process.env.ROLLBAR_TOKEN;
25+
26+
// Values MUST be set in production mode.
27+
// But, can set ROLLBAR_TOKEN to 'false' if you want to disable rollbar logging.
28+
if (process.env.NODE_ENV === 'production' && (!rollbarEnv || !rollbarToken)) {
29+
throw new Error(
30+
'Both ROLLBAR_ENV and ROLLBAR_TOKEN must be provided in the environment config.',
31+
);
32+
}
33+
34+
if (rollbarEnv && rollbarToken) {
35+
this.rollbar = new Rollbar({
36+
enabled: rollbarToken !== 'false',
37+
environment: rollbarEnv,
38+
accessToken: rollbarToken,
39+
captureUncaught: true,
40+
captureUnhandledRejections: true,
41+
});
42+
}
43+
}
844
}

yarn.lock

+81-2
Original file line numberDiff line numberDiff line change
@@ -1747,6 +1747,11 @@ async-each@^1.0.1:
17471747
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
17481748
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
17491749

1750+
async@~1.2.1:
1751+
version "1.2.1"
1752+
resolved "https://registry.yarnpkg.com/async/-/async-1.2.1.tgz#a4816a17cd5ff516dfa2c7698a453369b9790de0"
1753+
integrity sha1-pIFqF81f9RbfosdpikUzabl5DeA=
1754+
17501755
asynckit@^0.4.0:
17511756
version "0.4.0"
17521757
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -2460,6 +2465,11 @@ console-browserify@^1.1.0:
24602465
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
24612466
integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
24622467

2468+
2469+
version "0.3.0"
2470+
resolved "https://registry.yarnpkg.com/console-polyfill/-/console-polyfill-0.3.0.tgz#84900902a18c47a5eba932be75fa44d23e8af861"
2471+
integrity sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ==
2472+
24632473
constants-browserify@^1.0.0:
24642474
version "1.0.0"
24652475
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
@@ -2692,6 +2702,13 @@ debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
26922702
dependencies:
26932703
ms "^2.1.1"
26942704

2705+
decache@^3.0.5:
2706+
version "3.1.0"
2707+
resolved "https://registry.yarnpkg.com/decache/-/decache-3.1.0.tgz#4f5036fbd6581fcc97237ac3954a244b9536c2da"
2708+
integrity sha1-T1A2+9ZYH8yXI3rDlUokS5U2wto=
2709+
dependencies:
2710+
find "^0.2.4"
2711+
26952712
decamelize@^1.2.0:
26962713
version "1.2.0"
26972714
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -3012,6 +3029,13 @@ error-ex@^1.2.0, error-ex@^1.3.1:
30123029
dependencies:
30133030
is-arrayish "^0.2.1"
30143031

3032+
error-stack-parser@^2.0.4:
3033+
version "2.0.6"
3034+
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8"
3035+
integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==
3036+
dependencies:
3037+
stackframe "^1.1.1"
3038+
30153039
es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
30163040
version "1.17.5"
30173041
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
@@ -3651,6 +3675,13 @@ find-up@^4.0.0, find-up@^4.1.0:
36513675
locate-path "^5.0.0"
36523676
path-exists "^4.0.0"
36533677

3678+
find@^0.2.4:
3679+
version "0.2.9"
3680+
resolved "https://registry.yarnpkg.com/find/-/find-0.2.9.tgz#4b73f1ff9e56ad91b76e716407fe5ffe6554bb8c"
3681+
integrity sha1-S3Px/55WrZG3bnFkB/5f/mVUu4w=
3682+
dependencies:
3683+
traverse-chain "~0.1.0"
3684+
36543685
firebase-admin@^9.2.0:
36553686
version "9.2.0"
36563687
resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.2.0.tgz#df5176e2d0c5711df6dbf7012320492a703538ea"
@@ -4559,6 +4590,11 @@ is-wsl@^2.2.0:
45594590
dependencies:
45604591
is-docker "^2.0.0"
45614592

4593+
is_js@^0.9.0:
4594+
version "0.9.0"
4595+
resolved "https://registry.yarnpkg.com/is_js/-/is_js-0.9.0.tgz#0ab94540502ba7afa24c856aa985561669e9c52d"
4596+
integrity sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0=
4597+
45624598
45634599
version "0.0.1"
45644600
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -5156,7 +5192,7 @@ json-stable-stringify-without-jsonify@^1.0.1:
51565192
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
51575193
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
51585194

5159-
json-stringify-safe@~5.0.1:
5195+
json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1:
51605196
version "5.0.1"
51615197
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
51625198
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
@@ -5469,6 +5505,11 @@ lru-cache@^6.0.0:
54695505
dependencies:
54705506
yallist "^4.0.0"
54715507

5508+
lru-cache@~2.2.1:
5509+
version "2.2.4"
5510+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
5511+
integrity sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=
5512+
54725513
54735514
version "0.1.0"
54745515
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
@@ -6747,6 +6788,13 @@ repeat-string@^1.6.1:
67476788
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
67486789
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
67496790

6791+
request-ip@~2.0.1:
6792+
version "2.0.2"
6793+
resolved "https://registry.yarnpkg.com/request-ip/-/request-ip-2.0.2.tgz#deeae6d4af21768497db8cd05fa37143f8f1257e"
6794+
integrity sha1-3urm1K8hdoSX24zQX6NxQ/jxJX4=
6795+
dependencies:
6796+
is_js "^0.9.0"
6797+
67506798
67516799
version "1.1.3"
67526800
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
@@ -6890,6 +6938,22 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
68906938
hash-base "^3.0.0"
68916939
inherits "^2.0.1"
68926940

6941+
rollbar@^2.19.3:
6942+
version "2.19.3"
6943+
resolved "https://registry.yarnpkg.com/rollbar/-/rollbar-2.19.3.tgz#9779c4567cb5e49bb18e9bb60b70810ba4aad755"
6944+
integrity sha512-SBGEN999+wAlE2Q25pfzqUCqNiplpRPbgv/oYn4eW3Kk4CJox/mMGaSB9BWidX2Vep5TGpxxuyWCHrqklS+s/w==
6945+
dependencies:
6946+
async "~1.2.1"
6947+
console-polyfill "0.3.0"
6948+
error-stack-parser "^2.0.4"
6949+
json-stringify-safe "~5.0.0"
6950+
lru-cache "~2.2.1"
6951+
request-ip "~2.0.1"
6952+
source-map "^0.5.7"
6953+
uuid "3.0.x"
6954+
optionalDependencies:
6955+
decache "^3.0.5"
6956+
68936957
rsvp@^4.8.4:
68946958
version "4.8.5"
68956959
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
@@ -7220,7 +7284,7 @@ [email protected], source-map@^0.7.3:
72207284
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
72217285
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
72227286

7223-
source-map@^0.5.0, source-map@^0.5.6:
7287+
source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
72247288
version "0.5.7"
72257289
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
72267290
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -7307,6 +7371,11 @@ stack-utils@^2.0.2:
73077371
dependencies:
73087372
escape-string-regexp "^2.0.0"
73097373

7374+
stackframe@^1.1.1:
7375+
version "1.2.0"
7376+
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303"
7377+
integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==
7378+
73107379
static-extend@^0.1.1:
73117380
version "0.1.2"
73127381
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -7772,6 +7841,11 @@ tr46@^2.0.2:
77727841
dependencies:
77737842
punycode "^2.1.1"
77747843

7844+
traverse-chain@~0.1.0:
7845+
version "0.1.0"
7846+
resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1"
7847+
integrity sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE=
7848+
77757849
77767850
version "1.2.2"
77777851
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
@@ -8046,6 +8120,11 @@ [email protected]:
80468120
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
80478121
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
80488122

8123+
8124+
version "3.0.1"
8125+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
8126+
integrity sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=
8127+
80498128
80508129
version "8.1.0"
80518130
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d"

0 commit comments

Comments
 (0)