Risolvere i problemi relativi al linguaggio delle query di Logging

Questo documento illustra i problemi comuni che potresti riscontrare durante l'utilizzo il linguaggio di query di Logging.

Problemi di sintassi

Se riscontri problemi con le espressioni delle query, controlla quanto segue:

  • La query obbedisce alle regole di sintassi, con parentesi e virgolette abbinate.

  • I nomi dei campi voce di log sono stati digitati correttamente.

  • Le operazioni booleane sono in lettere maiuscole (AND, OR, NOT).

  • Assicurati di utilizzare [NULL_VALUE][json-null] per rappresentare JSON valori nulli.

  • Le espressioni booleane come limitazioni globali o come lato destro dei confronti devono essere racchiuse tra parentesi per chiarezza. Ad esempio, le seguenti due query sembrano uguali, ma non lo sono:

    insertId = "ABC-1" OR "ABC-2"  -- ERROR!?
    insertId = ("ABC-1" OR "ABC-2")
    
  • Il testo senza virgolette non deve contenere caratteri speciali. In caso di dubbi, aggiungi virgolette doppie. Ad esempio, nel seguente, il primo confronto è illegale a causa dell'operatore di sottostringa incorporato (:). Il confronto deve essere scritto tra virgolette:

    insertId = abc:def  -- ILLEGAL!
    insertId = "abc:def"
    
  • Google Cloud CLI richiede la query sia racchiusa tra virgolette. Per utilizzare le virgolette doppie per l'interpretazione letterale dei caratteri speciali con il comando gcloud logging, racchiudere l'intera query tra virgolette singole:

    gcloud logging read 'resource.type=gce_instance AND jsonPayload.message="Stopped Unattended Upgrades Shutdown."'
    gcloud logging read 'timestamp>="2020-06-17T21:00:00Z"'
    

  • Quando applichi un filtro a un campo associato al Any tipo di messaggio, il campo value viene attraversato automaticamente. Pertanto, non includere value nella query.

    Ad esempio, Status in un AuditLog ha un campo details di tipo google.protobuf.Any. Per eseguire query sul campo details, ometti il campo value quando specifichi il filtro:

    • Cosa fare

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

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