Fehlerbehebung in der Logging-Abfragesprache

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).

  • Achten Sie darauf, dass Sie [NULL_VALUE][json-null] zur Darstellung von JSON-Nullwerten verwenden.

  • 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. Der erste Vergleich unten ist 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"'
    

  • Beim Filtern nach einem Feld, das mit dem Nachrichtentyp Any verknüpft ist, wird das Feld value automatisch durchlaufen. Verwenden Sie daher value nicht in der Abfrage.

    Beispielsweise enthält das Feld Status in einer AuditLog-Nachricht das Feld details vom Typ google.protobuf.Any. Wenn Sie das Feld details abfragen möchten, lassen Sie das Feld value beim Angeben des Filters weg:

    • Richtig

      protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
      
    • Falsch

      protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"