Encontrando seus IDs de site e fonte
Uma busca em logs precisa de umsite_id e um ou mais source_ids. Ambos aparecem na
URL de uma fonte de log na AppSignal. Abra uma fonte de log e leia-os no path:
Buscar linhas de log
Corpo da requisição
Defina
use_expressions como true para usar a linguagem de query baseada em expressões
documentada nesta página.
pagination recebe per_page (número), order (ASC ou DESC) e um cursor
com um campo time (um timestamp ISO 8601, ou null na primeira página). Para
buscar a próxima página, envie o timestamp da última linha recebida como
cursor.time da próxima requisição.
Exemplo de requisição
Resposta
O endpoint retorna um array de linhas de log. Cada linha inclui estes campos:Campos estruturados como
status_code, path ou detail vivem no campo json,
não em attributes. Consulte-os pela chave exata como aparece no JSON do seu
log (por exemplo, status_code=401 ou detail.message:"required").Linguagem de query
Quandouse_expressions é true, a string query suporta lógica booleana sobre
campos da linha de log e o corpo json estruturado.
Operadores
Operadores de string (
=, !=, :, !:) comparam ambos os lados como strings. Operadores
numéricos (>, >=, <, <=) convertem ambos os lados em número; se um valor não puder ser
parseado como número, aquela linha de log é ignorada.
Combinando expressões
- AND / OR:
severity=error AND hostname:web, ouseverity=info OR severity=warn. - AND implícito: um espaço entre expressões significa AND.
severity=error hostname:webé o mesmo queseverity=error AND hostname:web. - Aninhamento com parênteses:
message:"API request" AND (severity=info OR severity=warn). - Precedência: AND tem precedência maior que OR.
OR, não só igualdade — por exemplo,
message:"API request" AND (user.id>1000 OR user.email:"example.com").
Campos
Dada uma linha de log com este corpo JSON:- Campos base:
message,severity,hostnameegroupcorrespondem aos campos de nível superior da linha de log. - JSON aninhado: use notação de ponto para alcançar dentro do corpo
json, comostatus_code=200ouuser.id=12345. - Arrays JSON: indexe elementos do array, como
user.roles.0=admin. - Pontos escapados: para corresponder a um ponto literal em um nome de chave, escape-o.
user.location\.country=UScorresponde à chavelocation.countrydentro deuser, em vez de um objetocountryaninhado. - Campo padrão: um termo isolado sem campo corresponde a
messagecom o operadorcontains.timeouté o mesmo quemessage:timeout.
attributes. nem adicionar um sufixo de tipo para consultar um campo
— referencie-o diretamente pelo nome. Veja sintaxe de query
legada se você tem queries mais antigas.
Aspas em valores
Envolva valores que contêm espaços ou parênteses entre aspas duplas. Caso contrário, o espaço divide o valor em expressões separadas unidas por AND implícito.\" e uma barra invertida com \\. Por exemplo, message:"value with \"quotes\""
corresponde ao texto value with "quotes".
Sintaxe de query legada
Queries mais antigas armazenavam atributos como campos tipados, então precisavam prefixarattributes., adicionar um sufixo de tipo (_string, _int) e usar uma lista [ ] para
múltiplos valores. A linguagem de query atual remove todas as três — referencie campos
diretamente e use OR em vez de uma lista:
422 com o slug de erro
legacy_log_query_syntax.