Risolvi i problemi relativi al linguaggio di 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 hai problemi con le query espressioni, controlla seguenti:

  • La query rispetta le regole di sintassi, con parentesi e virgolette abbinate.

  • I nomi dei campi delle voci di log sono scritti correttamente.

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

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

  • Per chiarezza, le espressioni booleane come limitazioni globali o come lato destro dei confronti devono essere racchiuse tra parentesi. Ad esempio, due query hanno lo stesso aspetto, ma non lo sono:

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

    insertId = abc:def  -- ILLEGAL!
    insertId = "abc:def"
    
  • Google Cloud CLI richiede che la query sia tra virgolette doppie. 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 una query sul campo details, ometti il campo value quando specifichi il filtro:

    • Cosa fare

      protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
      
    • Cosa non fare

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