JavaScript が無効になっているよ!

Fastify のログをPretty にする

 ·  ☕ 1 分(読了時間)  ·  🐨 Puliyo

目的

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) に教えてあげる:

1
2
3
4
5
const fastify = require('fastify')({
    logger: {
        prettyPrint: true
    }
});

これでログの形が変わる。

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 を与えたとする:

1
2
3
4
5
6
7
8
9
const fastify = require('fastify')({
    logger: {
        prettyPrint: {
            translateTime: true,
            ignore: 'pid,hostname,reqId,responseTime,req,res',
            messageFormat: '{msg} [id={reqId} {req.method} {req.url}]'
        }
    }
});

すると出力が下のようになり、さらに読みやすくなった。

[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  ]
シェア
支援