Cloud LoggingのログエントリとtextPayloadとjsonPayLoad


背景

Cloud Loggingを扱う際に、ログエントリについて把握しておくと捗るのでメモ。
まず、Cloud Loggingでは LogEntry というデータ型を利用してログを表現する。

LogEntry型で必須の項目は

  • logName: ログ名. 例: projects/PROJECT_ID/logs/cloudfunctions.googleapis.com%2Fcloud-functions
  • resource: リソース情報. MonitoredResourcedというデータ型で表現される. 例: { "type": "gce_instance", "labels": { "instanceId": "12345678901234", "zone": "us-central1-a" }}

そのほかに、timestampやseverity, payloadなどの情報を持つ。(詳細)

特にpayloadに関しては、textPayloadとjsonPayloadの2種類があり、この2つどちらを使うのかで検索クエリが異ってくる ので、違いを把握しておく必要がある。

textPayloadとjsonPayload

textPayloadはその名の通りテキストが入る。
jsonPayloadはJSON形式でログを表現できる -> 構造化ロギング

触ってみる

gcloudでtextPayloadとjsonPayloadのログを登録してみてみる。

textPayload

gcloudでログを登録

gcloud logging write my-test-log "A simple entry."

cloud loggingのコンソールからはこんな感じで見える↓

jsonPayload

gcloudでログを登録

gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'

cloud loggingのコンソールからはこんな感じで見える↓

このように、textPayloadとjsonPayloadで出力のされ方が変わり、検索する際のクエリも変わってくるので、どちらでロギングしているかに注意する。

参考