StackDriver Logging でログを見るときや、ログメトリクスを定義する時にタスクキューのリクエストを別途扱いたい時がある。たとえば、通常のユーザーリクエストはレスポンスタイムの遅延を許容したくないが、タスクキューの場合は問題ないなどのケースである。
一番思いつきやすいのが、タスクキューのパスをログフィルターで除外することだが、もっと簡単な方法があった。以下でタスクキューを除いたログを閲覧したり、ログメトリクスを定義できる。
resource.type = gae_app AND resource.labels.module_id = "xxxx" AND logName = "projects/xxxx/logs/appengine.googleapis.com%2Frequest_log" AND NOT protoPayload.taskName:*
Task Queue の処理には必ず protoPayload.taskName が入る。フィールドがあるかないかのチェックは protoPayload.taskName:*
のようにすれば良い。
フィールド内の特定の値をテストせずにフィールドの有無をテストするには、:* 比較を使用します。 Advanced Logs Filters | Stackdriver Logging | Google Cloud Platform
つまりこれで OK。