Fehlerbehebung bei der Logging-Abfragesprache

In diesem Dokument werden häufige Probleme erläutert, die bei der Verwendung von Logging-Abfragesprache.

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][json-null], 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 folgenden beiden Abfragen 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 Beispiel wurde der erste Vergleich ist illegal des eingebetteten Teilstring-Operators (:) festgelegt. Der Vergleich muss mit Anführungszeichen:

    insertId = abc:def  -- ILLEGAL!
    insertId = "abc:def"
    
  • Die Google Cloud CLI benötigt in doppelte Anführungszeichen setzen. 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 der Any Nachrichtentyp verwendet, wird das Feld value automatisch durchlaufen. Fügen Sie value daher nicht in die Abfrage ein.

    Beispiel: Der Parameter Status in einem AuditLog Nachricht enthält ein details-Feld vom Typ google.protobuf.Any. Um das Feld details abzufragen, lassen Sie das Feld value bei der Angabe der Filter:

    • Richtig

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

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