目的
Fastify のログをPretty に(読みやすく)する方法を紹介。
方法
Fastify の資料ページに書かれているが、Fastify はPino をLogger として使っている。
https://www.fastify.io/docs/latest/Logging/
で、Pino にはpino-pretty というかなり助かるモジュールが存在する。
https://github.com/pinojs/pino-pretty
さっそくモジュールをインストール:
npm install --save pino-pretty
インストールしたらpino-pretty を使うようにFastify (Pino) に教えてあげる:
|
|
これでログの形が変わる。
BEFORE:
{"level":30,"time":1617089076094,"pid":29400,"hostname":"HOSTNAME","msg":"Server listening at http://127.0.0.1:3000"}
{"level":30,"time":1617089142419,"pid":29400,"hostname":"HOSTNAME","reqId":"req-1","req":{"method":"GET","url":"/","hostname":"127.0.0.1:3000","remoteAddress":"127.0.0.1","remotePort":52883},"msg":"incoming request"}
{"level":30,"time":1617089142436,"pid":29400,"hostname":"HOSTNAME","reqId":"req-1","res":{"statusCode":200},"responseTime":15.840407997369766,"msg":"request completed"}
AFTER:
[1617089180087] INFO (29392 on HOSTNAME): Server listening at http://127.0.0.1:3000
[1617089181725] INFO (29392 on HOSTNAME): incoming request
req: {
"method": "GET",
"url": "/",
"hostname": "127.0.0.1:3000",
"remoteAddress": "127.0.0.1",
"remotePort": 52897
}
reqId: "req-1"
[1617089181735] INFO (29392 on HOSTNAME): request completed
res: {
"statusCode": 304
}
responseTime: 8.969883024692535
reqId: "req-1"
読みやすくなったがMultiline になっていたり不要な情報も表示されている。
pino-pretty はそんな悩みも解消、ログの出力形式をコントロールすることができる。
例えば、以下のように pino-pretty にoptions を与えたとする:
|
|
すると出力が下のようになり、さらに読みやすくなった。
[2021-03-30 07:28:26.038 +0000] INFO: Server listening at http://127.0.0.1:3000 [id= ]
[2021-03-30 07:28:30.414 +0000] INFO: incoming request [id=req-1 GET /]
[2021-03-30 07:28:30.425 +0000] INFO: request completed [id=req-1 ]