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 kapital (
AND
,OR
,NOT
).Pastikan Anda menggunakan
NULL_VALUE
untuk merepresentasikan nilai null JSON.Ekspresi boolean sebagai batasan global atau sebagai sisi kanan perbandingan harus diberi tanda kurung agar lebih jelas. Misalnya, dua kueri berikut terlihat sama, tetapi tidak:
insertId = "ABC-1" OR "ABC-2" -- ERROR!? insertId = ("ABC-1" OR "ABC-2")
Teks yang tidak dikutip tidak boleh berisi karakter khusus. Jika ragu, tambahkan tanda kutip ganda. Misalnya, pada contoh berikut, perbandingan pertama tidak valid karena operator substring yang disematkan (
:
). Perbandingan harus ditulis dengan tanda kutip:insertId = abc:def -- ILLEGAL! insertId = "abc:def"
Google Cloud CLI mengharuskan kueri berada dalam tanda petik ganda. Untuk menggunakan tanda kutip ganda untuk melakukan escape pada karakter khusus menggunakan perintah
gcloud logging
, bungkus 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 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:Lakukan
protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
Jangan
protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"