In diesem Dokument werden häufige Probleme beschrieben, die bei der Verwendung der Logging-Abfragesprache auftreten können.
Syntaxprobleme
Prüfen Sie bei Problemen mit Ausdrücken von Abfragen Folgendes:
Die Abfragen erfüllen die Syntaxregeln hinsichtlich entsprechender Klammern und Anführungszeichen.
Die Feldnamen für die Log-Einträge sind korrekt geschrieben.
Boolesche Operatoren sind in Großbuchstaben angegeben (
AND
,OR
,NOT
).Verwenden Sie unbedingt
NULL_VALUE
, um JSON-Nullwerte darzustellen.Boolesche Ausdrücke, die als globale Einschränkungen oder als rechte Seite in Vergleichen verwendet werden, sollten der Übersichtlichkeit halber in Klammern gesetzt werden. Die beiden Abfragen unten sehen beispielsweise gleich aus, sind aber unterschiedlich:
insertId = "ABC-1" OR "ABC-2" -- ERROR!? insertId = ("ABC-1" OR "ABC-2")
Text ohne Anführungszeichen darf keine Sonderzeichen enthalten. Fügen Sie im Zweifelsfall doppelte Anführungszeichen hinzu. Im Folgenden ist der erste Vergleich beispielsweise aufgrund des eingebetteten Teilstring-Operators (
:
) unzulässig. Er muss Anführungszeichen enthalten:insertId = abc:def -- ILLEGAL! insertId = "abc:def"
Bei der Google Cloud CLI muss die Abfrage in doppelte Anführungszeichen gesetzt werden. Wenn Sie mit dem Befehl
gcloud logging
doppelte Anführungszeichen als Maskierungszeichen von Sonderzeichen verwenden möchten, setzen Sie den gesamten Filter stattdessen in einfache Anführungszeichen:gcloud logging read 'resource.type=gce_instance AND jsonPayload.message="Stopped Unattended Upgrades Shutdown."' gcloud logging read 'timestamp>="2020-06-17T21:00:00Z"'
Wenn Sie nach einem Feld filtern, das mit dem Nachrichtentyp
Any
verknüpft ist, wird das Feldvalue
automatisch durchlaufen. Nehmen Sievalue
daher nicht in die Abfrage auf.Das Feld
Status
in einerAuditLog
-Nachricht hat beispielsweise ein Felddetails
vom Typgoogle.protobuf.Any
. Wenn Sie das Felddetails
abfragen möchten, lassen Sie das Feldvalue
weg, wenn Sie den Filter angeben:Do
protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
Nicht erlaubt
protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"