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 campovalue
é percorrido automaticamente. Por conseguinte, não incluavalue
na consulta.Por exemplo, o campo
Status
numa mensagemAuditLog
tem um campodetails
do tipogoogle.protobuf.Any
. Para consultar o campodetails
, omita o campovalue
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.*"