Skip to content
This repository was archived by the owner on Dec 4, 2024. It is now read-only.

Commit 9f5e6c7

Browse files
authored
feat: use pino serializers (PL-000) (#60)
1 parent e1e1c80 commit 9f5e6c7

File tree

8 files changed

+99
-45
lines changed

8 files changed

+99
-45
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
"dependencies": {
1515
"colorette": "2.0.19",
1616
"lodash.merge": "4.6.2",
17-
"pino": "8.7.0",
18-
"pino-http": "8.2.1",
19-
"pino-pretty": "9.1.1",
17+
"pino": "8.17.2",
18+
"pino-http": "8.6.1",
19+
"pino-pretty": "9.4.1",
2020
"ts-pattern": "^4.0.5"
2121
},
2222
"devDependencies": {

src/detailed.logger.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import pino from 'pino';
22

33
import { LogLevel } from './log-level.enum';
4+
import { MaximalSerializer } from './serializers/maximal';
45

56
export const createDetailedConfig = (level: LogLevel): pino.LoggerOptions => ({
67
level,
78
transport: { target: 'pino-pretty' },
9+
serializers: MaximalSerializer,
810
});
911

1012
export const createDetailedLogger = (level: LogLevel) => pino(createDetailedConfig(level));

src/http.logger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const createHTTPConfig = ({ format, level }: LoggerOptions): Options => (
1717
if (isErrorResponse(res)) return LogLevel.ERROR;
1818
return LogLevel.INFO;
1919
},
20+
wrapSerializers: true,
2021

2122
...match<LogFormat, Options>(format)
2223
.with(LogFormat.INLINE, () => ({

src/inline.logger.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import pino from 'pino';
22

33
import { LogLevel } from './log-level.enum';
4+
import { MinimalSerializer } from './serializers/minimal';
45

56
export const createInlineConfig = (level: LogLevel): pino.LoggerOptions => ({
67
level,
78
transport: {
89
target: 'pino-pretty',
910
options: { include: 'time,level' },
1011
},
12+
serializers: MinimalSerializer,
1113
});
1214

1315
export const createInlineLogger = (level: LogLevel) => pino(createInlineConfig(level));

src/json.logger.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import pino from 'pino';
22

33
import { LogLevel } from './log-level.enum';
4+
import { MinimalSerializer } from './serializers/minimal';
45

5-
export const createJSONConfig = (level: LogLevel): pino.LoggerOptions => ({ level });
6+
export const createJSONConfig = (level: LogLevel): pino.LoggerOptions => ({
7+
level,
8+
serializers: MinimalSerializer,
9+
});
610

711
export const createJSONLogger = (level: LogLevel) => pino(createJSONConfig(level));

src/serializers/maximal.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { SerializedError, SerializedRequest, SerializedResponse } from 'pino';
2+
3+
export const MaximalSerializer = {
4+
req: (req: SerializedRequest) => ({
5+
id: req.id,
6+
method: req.method,
7+
url: req.url,
8+
query: req.query,
9+
params: req.params,
10+
headers: Object.fromEntries(Object.entries(req.headers).filter(([key]) => key === 'authorization')),
11+
remoteAddress: req.remoteAddress,
12+
remotePort: req.remotePort,
13+
}),
14+
res: (res: SerializedResponse) => ({
15+
statusCode: res.statusCode,
16+
headers: res.headers,
17+
}),
18+
err: (err: SerializedError) => ({
19+
type: err.type,
20+
message: err.message,
21+
stack: err.stack,
22+
}),
23+
};

src/serializers/minimal.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { SerializedError, SerializedRequest, SerializedResponse } from 'pino';
2+
3+
export const MinimalSerializer = {
4+
req: (req: SerializedRequest) => ({
5+
method: req.method,
6+
url: req.url,
7+
query: req.query,
8+
params: req.params,
9+
remoteAddress: req.remoteAddress,
10+
remotePort: req.remotePort,
11+
}),
12+
res: (res: SerializedResponse) => ({
13+
statusCode: res.statusCode,
14+
}),
15+
err: (err: SerializedError) => ({
16+
type: err.type,
17+
message: err.message,
18+
stack: err.stack,
19+
}),
20+
};

yarn.lock

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3796,13 +3796,6 @@ fast-safe-stringify@^2.1.1:
37963796
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
37973797
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
37983798

3799-
fast-url-parser@^1.1.3:
3800-
version "1.1.3"
3801-
resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d"
3802-
integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=
3803-
dependencies:
3804-
punycode "^1.3.2"
3805-
38063799
fastq@^1.6.0:
38073800
version "1.13.0"
38083801
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
@@ -7568,29 +7561,36 @@ pify@^3.0.0:
75687561
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
75697562
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
75707563

7571-
pino-abstract-transport@^1.0.0, [email protected]:
7564+
pino-abstract-transport@^1.0.0:
75727565
version "1.0.0"
75737566
resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3"
75747567
integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==
75757568
dependencies:
75767569
readable-stream "^4.0.0"
75777570
split2 "^4.0.0"
75787571

7579-
7580-
version "8.2.1"
7581-
resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-8.2.1.tgz#24df377d7681a9c57318f6ecc4ac7c09327f1c8e"
7582-
integrity sha512-bdWAE4HYfFjDhKw2/N7BLNSIFAs+WDLZnetsGRpBdNEKq7/RoZUgblLS5OlMY257RPQml6J5QiiLkwxbstzWbA==
7572+
7573+
version "1.1.0"
7574+
resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz#083d98f966262164504afb989bccd05f665937a8"
7575+
integrity sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==
7576+
dependencies:
7577+
readable-stream "^4.0.0"
7578+
split2 "^4.0.0"
7579+
7580+
7581+
version "8.6.1"
7582+
resolved "https://registry.yarnpkg.com/pino-http/-/pino-http-8.6.1.tgz#46338caea759c9c86fc44f3226ed6976364ec269"
7583+
integrity sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==
75837584
dependencies:
7584-
fast-url-parser "^1.1.3"
75857585
get-caller-file "^2.0.5"
7586-
pino "^8.0.0"
7587-
pino-std-serializers "^6.0.0"
7588-
process-warning "^2.0.0"
7586+
pino "^8.17.1"
7587+
pino-std-serializers "^6.2.2"
7588+
process-warning "^3.0.0"
75897589

7590-
pino-pretty@9.1.1:
7591-
version "9.1.1"
7592-
resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-9.1.1.tgz#e7d64c1db98266ca428ab56567b844ba780cd0e1"
7593-
integrity sha512-iJrnjgR4FWQIXZkUF48oNgoRI9BpyMhaEmihonHeCnZ6F50ZHAS4YGfGBT/ZVNsPmd+hzkIPGzjKdY08+/yAXw==
7590+
pino-pretty@9.4.1:
7591+
version "9.4.1"
7592+
resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-9.4.1.tgz#89121ef32d00a4d2e4b1c62850dcfff26f62a185"
7593+
integrity sha512-loWr5SNawVycvY//hamIzyz3Fh5OSpvkcO13MwdDW+eKIGylobPLqnVGTDwDXkdmpJd1BhEG+qhDw09h6SqJiQ==
75947594
dependencies:
75957595
colorette "^2.0.7"
75967596
dateformat "^4.6.3"
@@ -7607,26 +7607,26 @@ [email protected]:
76077607
sonic-boom "^3.0.0"
76087608
strip-json-comments "^3.1.1"
76097609

7610-
pino-std-serializers@^6.0.0:
7611-
version "6.0.0"
7612-
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.0.0.tgz#4c20928a1bafca122fdc2a7a4a171ca1c5f9c526"
7613-
integrity sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==
7610+
pino-std-serializers@^6.0.0, pino-std-serializers@^6.2.2:
7611+
version "6.2.2"
7612+
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz#d9a9b5f2b9a402486a5fc4db0a737570a860aab3"
7613+
integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==
76147614

7615-
pino@8.7.0, pino@^8.0.0:
7616-
version "8.7.0"
7617-
resolved "https://registry.yarnpkg.com/pino/-/pino-8.7.0.tgz#58621608a3d8540ae643cdd9194cdd94130c78d9"
7618-
integrity sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==
7615+
pino@8.17.2, pino@^8.17.1:
7616+
version "8.17.2"
7617+
resolved "https://registry.yarnpkg.com/pino/-/pino-8.17.2.tgz#0ed20175623a69d31664a1e8a5f85476272224be"
7618+
integrity sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==
76197619
dependencies:
76207620
atomic-sleep "^1.0.0"
76217621
fast-redact "^3.1.1"
76227622
on-exit-leak-free "^2.1.0"
7623-
pino-abstract-transport v1.0.0
7623+
pino-abstract-transport v1.1.0
76247624
pino-std-serializers "^6.0.0"
7625-
process-warning "^2.0.0"
7625+
process-warning "^3.0.0"
76267626
quick-format-unescaped "^4.0.3"
76277627
real-require "^0.2.0"
76287628
safe-stable-stringify "^2.3.1"
7629-
sonic-boom "^3.1.0"
7629+
sonic-boom "^3.7.0"
76307630
thread-stream "^2.0.0"
76317631

76327632
pkg-dir@^4.1.0:
@@ -7708,10 +7708,10 @@ process-on-spawn@^1.0.0:
77087708
dependencies:
77097709
fromentries "^1.2.0"
77107710

7711-
process-warning@^2.0.0:
7712-
version "2.0.0"
7713-
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.0.0.tgz#341dbeaac985b90a04ebcd844d50097c7737b2ee"
7714-
integrity sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==
7711+
process-warning@^3.0.0:
7712+
version "3.0.0"
7713+
resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-3.0.0.tgz#96e5b88884187a1dce6f5c3166d611132058710b"
7714+
integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==
77157715

77167716
process@^0.11.10:
77177717
version "0.11.10"
@@ -7799,11 +7799,6 @@ pumpify@^1.3.3:
77997799
inherits "^2.0.3"
78007800
pump "^2.0.0"
78017801

7802-
punycode@^1.3.2:
7803-
version "1.4.1"
7804-
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
7805-
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
7806-
78077802
punycode@^2.1.0, punycode@^2.1.1:
78087803
version "2.1.1"
78097804
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
@@ -8695,13 +8690,20 @@ socks@~2.3.2:
86958690
ip "1.1.5"
86968691
smart-buffer "^4.1.0"
86978692

8698-
sonic-boom@^3.0.0, sonic-boom@^3.1.0:
8693+
sonic-boom@^3.0.0:
86998694
version "3.2.0"
87008695
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.2.0.tgz#ce9f2de7557e68be2e52c8df6d9b052e7d348143"
87018696
integrity sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==
87028697
dependencies:
87038698
atomic-sleep "^1.0.0"
87048699

8700+
sonic-boom@^3.7.0:
8701+
version "3.8.0"
8702+
resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.8.0.tgz#e442c5c23165df897d77c3c14ef3ca40dec66a66"
8703+
integrity sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==
8704+
dependencies:
8705+
atomic-sleep "^1.0.0"
8706+
87058707
sorted-object@~2.0.1:
87068708
version "2.0.1"
87078709
resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc"

0 commit comments

Comments
 (0)