GCP の Cloud Logging を試した
Cloud Logging には良いログのプラクティスが詰まっている気がしていて、実際に使うかに関わらずその思想は学ぶ価値があると考えて試してみました。 https://github.com/odan-sandbox/cloud-logging-sandbox
ログの構造
- GCP に送信されるログ 1 つ 1 つに
LogEntry
という名前が付けられているらしく、その型定義はここ - マージ対象の
google.logging.v2.ILogEntry
はここ - npm のライブラリ的には
Entity
という名前が付けられているぽい?- Logging クラスの entry メソッドを使って生成される
- https://github.com/googleapis/nodejs-logging/blob/869bbafe37/src/index.ts#L461
Entity
の実装はこのクラス- https://github.com/googleapis/nodejs-logging/blob/869bbafe37/src/entry.ts#L113-L115
metadata
がLogEntry
data
がData
Data
はstring
だったりオブジェクトが入る想定っぽいLogEntry
的にはstring
だとtextPayload
、オブジェクトだとjsonPayload
という名前がついている
@google-cloud/logging-winston
- https://github.com/googleapis/nodejs-logging-winston
- Node.js のログライブラリの winston 用のライブラリがある
- エラー時のスタックトレースは
jsonPayload.metadata.meta
以下にある
- エラー時のスタックトレースは
- express の middleware が事前に用意されている
- https://github.com/googleapis/nodejs-logging-winston#using-as-an-express-middleware
- 個人的には stdout に出る内容がそのまま GCP にされてほしいので微妙かも
- 12-factors app の思想に近い