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_VALUEuntuk 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, kolomvalueakan otomatis dilalui. Oleh karena itu, jangan sertakanvaluedalam kueri.Misalnya, kolom
Statusdalam pesanAuditLogmemiliki kolomdetailsyang berjenisgoogle.protobuf.Any. Untuk membuat kueri kolomdetails, hapus kolomvaluesaat menentukan filter:Lakukan
protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
Jangan
protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"