Resolva problemas com o idioma de consulta de registo

Este documento explica os problemas comuns que pode encontrar quando usa a linguagem de consulta Logging.

Problemas de sintaxe

Se tiver problemas com as expressões das suas consultas, verifique o seguinte:

  • A sua consulta obedece às regras de sintaxe, com parênteses e aspas correspondentes.

  • Os nomes dos campos de entrada do registo estão escritos corretamente.

  • As operações booleanas estão em letras maiúsculas (AND, OR, NOT).

  • Certifique-se de que está a usar NULL_VALUE para representar valores nulos JSON.

  • As expressões booleanas como restrições globais ou como o lado direito das comparações devem ser colocadas entre parênteses para maior clareza. Por exemplo, as duas consultas seguintes parecem iguais, mas não são:

    insertId = "ABC-1" OR "ABC-2"  -- ERROR!?
    insertId = ("ABC-1" OR "ABC-2")
    
  • O texto sem aspas não pode conter carateres especiais. Em caso de dúvida, adicione aspas. Por exemplo, na comparação seguinte, a primeira comparação é ilegal devido ao operador de subcadeia incorporado (:). A comparação tem de ser escrita com aspas:

    insertId = abc:def  -- ILLEGAL!
    insertId = "abc:def"
    
  • A CLI do Google Cloud requer que a consulta esteja entre aspas duplas. Para usar as aspas duplas para ignorar carateres especiais com o comando gcloud logging, envolva toda a consulta com aspas simples:

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

  • Quando está a filtrar um campo associado ao tipo de mensagem Any, o campo value é percorrido automaticamente. Por conseguinte, não inclua value na consulta.

    Por exemplo, o campo Status numa mensagem AuditLog tem um campo details do tipo google.protobuf.Any. Para consultar o campo details, omita o campo value quando especificar o filtro:

    • O que fazer

      protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
      
    • O que não deve fazer

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