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 petik yang cocok.
Nama kolom entri log Anda sudah dieja dengan benar.
Operasi Boolean menggunakan huruf besar (
AND
,OR
,NOT
).Pastikan Anda menggunakan [
NULL_VALUE
][json-null] 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 di bawah ini 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, perbandingan pertama di bawah ini ilegal karena operator substring yang disematkan (
:
). Perbandingannya harus ditulis dengan tanda kutip:insertId = abc:def -- ILLEGAL! insertId = "abc:def"
Google Cloud CLI mengharuskan kueri ditulis 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 kolom yang terkait dengan jenis pesan
Any
, kolomvalue
akan otomatis dilalui. Oleh karena itu, jangan sertakanvalue
dalam kueri.Misalnya, kolom
Status
dalam pesan AuditLog 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.*"