Dokumen ini menjelaskan masalah umum yang mungkin Anda alami saat menggunakan bahasa kueri Logging.
Masalah sintaksis
Jika Anda mengalami masalah dengan ekspresi kueri, periksa hal berikut:
Kueri Anda mematuhi aturan sintaksis, dengan tanda kurung dan tanda kutip yang cocok.
Nama kolom entri log Anda dieja dengan benar.
Operasi Boolean menggunakan huruf besar (
AND
,OR
,NOT
).Pastikan Anda menggunakan
NULL_VALUE
untuk merepresentasikan nilai null JSON.Ekspresi boolean sebagai batasan global atau sebagai sisi kanan perbandingan harus diapit tanda kurung untuk kejelasan. Misalnya, dua kueri berikut terlihat sama, tetapi tidak:
insertId = "ABC-1" OR "ABC-2" -- ERROR!? insertId = ("ABC-1" OR "ABC-2")
Teks tanpa tanda kutip tidak boleh berisi karakter khusus apa pun. Jika ragu, tambahkan tanda kutip ganda. Misalnya, dalam contoh berikut, perbandingan pertama tidak sah karena operator substring tersemat (
:
). Perbandingan harus ditulis dengan tanda kutip:insertId = abc:def -- ILLEGAL! insertId = "abc:def"
Google Cloud CLI mengharuskan kueri dalam tanda kutip ganda. Untuk menggunakan tanda kutip ganda guna meng-escape karakter khusus menggunakan perintah
gcloud logging
, gabungkan seluruh kueri dengan tanda kutip tunggal:gcloud logging read 'resource.type=gce_instance AND jsonPayload.message="Stopped Unattended Upgrades Shutdown."' gcloud logging read 'timestamp>="2020-06-17T21:00:00Z"'
Saat Anda memfilter pada kolom yang terkait dengan jenis pesan
Any
, kolomvalue
akan otomatis dilalui. Oleh karena itu, jangan sertakanvalue
dalam kueri.Misalnya, kolom
Status
dalam pesanAuditLog
memiliki kolomdetails
yang berjenisgoogle.protobuf.Any
. Untuk membuat kueri kolomdetails
, hapus kolomvalue
saat menentukan filter:Anjuran
protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
Larangan
protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"