Trouver vos IDs de site et de source
Une recherche de journaux nécessite unsite_id et un ou plusieurs
source_ids. Les deux apparaissent dans l’URL d’une source de journal dans
AppSignal. Ouvrez une source de journal et lisez-les à partir du chemin :
Rechercher des lignes de journal
Corps de la requête
Définissez
use_expressions sur true pour utiliser le langage de requête
basé sur les expressions documenté sur cette page.
pagination prend per_page (nombre), order (ASC ou DESC), et un
cursor avec un champ time (un horodatage ISO 8601, ou null pour la
première page). Pour récupérer la page suivante, envoyez l’horodatage de la
dernière ligne que vous avez reçue comme cursor.time de la requête suivante.
Exemple de requête
Réponse
Le point de terminaison renvoie un tableau de lignes de journal. Chaque ligne inclut ces champs :Les champs structurés tels que
status_code, path ou detail se trouvent
dans le champ json, et non dans attributes. Interrogez-les par leur clé
exacte telle qu’elle apparaît dans le JSON de votre journal (par exemple,
status_code=401 ou detail.message:"required").Langage de requête
Lorsqueuse_expressions est true, la chaîne query prend en charge la
logique booléenne sur les champs des lignes de journal et le corps structuré
json.
Opérateurs
Les opérateurs de chaîne (
=, !=, :, !:) comparent les deux côtés comme
des chaînes. Les opérateurs numériques (>, >=, <, <=) convertissent
les deux côtés en nombres ; si une valeur ne peut pas être analysée comme un
nombre, cette ligne de journal est ignorée.
Combiner des expressions
- AND / OR :
severity=error AND hostname:web, ouseverity=info OR severity=warn. - AND implicite : un espace entre les expressions signifie AND.
severity=error hostname:webest identique àseverity=error AND hostname:web. - Imbrication avec des parenthèses :
message:"API request" AND (severity=info OR severity=warn). - Précédence : AND a une priorité plus élevée que OR.
OR, pas
uniquement l’égalité — par exemple, message:"API request" AND (user.id>1000 OR user.email:"example.com").
Champs
Étant donné une ligne de journal avec ce corps JSON :- Champs de base :
message,severity,hostnameetgroupcorrespondent aux champs de premier niveau de la ligne de journal. - JSON imbriqué : utilisez la notation par point pour accéder au corps
json, commestatus_code=200ouuser.id=12345. - Tableaux JSON : indexez les éléments du tableau, comme
user.roles.0=admin. - Points échappés : pour faire correspondre un point littéral dans un nom de clé, échappez-le.
user.location\.country=UScorrespond à la clélocation.countryà l’intérieur deuser, plutôt qu’à un objetcountryimbriqué. - Champ par défaut : un terme isolé sans champ correspond à
messageavec l’opérateurcontains.timeoutéquivaut àmessage:timeout.
attributes. ou d’ajouter un suffixe de
type pour interroger un champ — référencez-le directement par son nom. Voir
syntaxe de requête héritée si vous avez des requêtes
plus anciennes.
Mise entre guillemets des valeurs
Encadrez les valeurs contenant des espaces ou des parenthèses avec des guillemets doubles. Sinon, l’espace divise la valeur en expressions distinctes jointes par un AND implicite.\" et une barre oblique inverse avec
\\. Par exemple, message:"value with \"quotes\"" correspond au texte
value with "quotes".
Syntaxe de requête héritée
Les requêtes plus anciennes stockaient les attributs comme des champs typés, elles devaient donc préfixerattributes., ajouter un suffixe de type
(_string, _int) et utiliser une liste [ ] pour plusieurs valeurs. Le
langage de requête actuel supprime ces trois éléments — référencez les champs
directement et utilisez OR au lieu d’une liste :
422 avec le
slug d’erreur legacy_log_query_syntax.