Este documento explica problemas comuns que você pode encontrar ao usar a linguagem de consulta do Logging.
Problemas de sintaxe
Se você tiver problemas com as expressões de suas consultas, verifique o seguinte:
Sua consulta obedece às regras de sintaxe, com parênteses correspondentes e aspas.
Os nomes dos campos de entrada de registro estão escritos corretamente.
As operações booleanas estão em maiúsculas (
AND
,OR
,NOT
).Verifique se você está usando [
NULL_VALUE
][json-null] para representar valores nulos JSON.As expressões booleanas como restrições globais ou como o lado direito das comparações precisam estar entre parênteses para maior clareza. Por exemplo, o 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 nenhum caractere especial. Em caso de dúvida, adicione aspas duplas. Por exemplo, a seguir, a primeira comparação é ilegal devido ao operador de substring incorporado (
:
). A comparação precisa ser escrito entre aspas:insertId = abc:def -- ILLEGAL! insertId = "abc:def"
A Google Cloud CLI exige que a consulta fique entre aspas duplas. Para usar aspas duplas com a finalidade de fazer o escape de caracteres especiais usando o comando
gcloud logging
, agrupe a consulta inteira 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 você filtra um campo associado ao tipo de mensagem
Any
, o campovalue
é percorrido automaticamente. Portanto, não incluavalue
na consulta.Por exemplo, o campo
Status
em uma mensagem AuditLog tem um campodetails
do tipogoogle.protobuf.Any
. Para consultar o campodetails
, omita o campovalue
ao especificar o filtro:O que fazer
protoPayload.status.details.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"
O que não fazer
protoPayload.status.details.value.conditionNotMet.userVisibleMessage =~ "Specified reservation.*"