Naar hoofdinhoud gaan
Doorzoek logregels met de Public API (V2). Dit is de manier om logs programmatisch op te vragen, inclusief gestructureerde (JSON) loggegevens. De GraphQL API stelt geen logregels beschikbaar.
Bent u een AI-agent of -assistent aan het bouwen, dan stelt AppSignal MCP logzoekopdrachten en andere monitoringgegevens rechtstreeks beschikbaar voor agents, zonder dat u deze API zelf hoeft aan te roepen.

Uw site- en bron-ID’s vinden

Een logzoekopdracht heeft een site_id en een of meer source_ids nodig. Beide verschijnen in de URL van een log source in AppSignal. Open een log source en lees ze uit het pad:
https://appsignal.com/<organization>/sites/<SITE_ID>/logs/sources/<SOURCE_ID>

Logregels doorzoeken

POST /api/v2/logs/lines

Request body

VeldTypeVereistBeschrijving
site_idstringJaSite om op te vragen.
source_idsstring[]JaLog source-ID’s om te doorzoeken. Ten minste één is vereist.
querystringJaQuerystring die logregels filtert. Zie querytaal.
use_expressionsbooleanNeeAls true, parse query met de expressie-gebaseerde querytaal.
fromstring (ISO 8601)NeeStartpunt van het tijdsbereik. Standaard is de ondergrens van de retentie.
tostring (ISO 8601)NeeEindpunt van het tijdsbereik. Standaard is de huidige tijd.
paginationobjectJaPaginatie-cursor en -richting (zie de volgende sectie).
Stel use_expressions in op true om de expressie-gebaseerde querytaal te gebruiken die op deze pagina wordt gedocumenteerd. pagination neemt per_page (number), order (ASC of DESC) en een cursor met een time-veld (een ISO 8601-tijdstempel, of null voor de eerste pagina). Om de volgende pagina op te halen, verzendt u de tijdstempel van de laatste regel die u ontving als de cursor.time van het volgende verzoek.

Voorbeeld van een verzoek

curl --request POST \
  --url "https://appsignal.com/api/v2/logs/lines" \
  --header "Authorization: Bearer YOUR-PERSONAL-API-TOKEN" \
  --header "Content-Type: application/json" \
  --data @body.json
{
  "site_id": "YOUR-SITE-ID",
  "source_ids": ["YOUR-LOG-SOURCE-ID"],
  "query": "severity=error status_code=401",
  "use_expressions": true,
  "from": "2026-06-22T00:00:00Z",
  "to": "2026-06-22T23:59:59Z",
  "pagination": {
    "per_page": 100,
    "order": "DESC",
    "cursor": { "time": null }
  }
}

Response

Het eindpunt retourneert een array van logregels. Elke regel bevat deze velden:
VeldTypeBeschrijving
idstringLogregel-identificator.
timestampstring (ISO 8601)Wanneer de logregel is vastgelegd.
source_idstringLog source waar de regel bij hoort.
severitystringSeverityniveau, zoals info of error.
messagestringDe body van het logbericht.
hostnamestringHost die de regel heeft geproduceerd.
groupstringLoggroep.
jsonstringDe ruwe gestructureerde (JSON) body van de logregel, indien beschikbaar.
attributesobjectVerouderde getypeerde sleutel-waardeattributen. Wordt uitgefaseerd — geef de voorkeur aan json.
Gestructureerde velden zoals status_code, path of detail zitten in het json- veld, niet in attributes. Vraag ze op via hun exacte sleutel zoals deze in uw log-JSON voorkomt (bijvoorbeeld status_code=401 of detail.message:"required").

Querytaal

Wanneer use_expressions true is, ondersteunt de query-string booleaanse logica over velden van logregels en de gestructureerde json-body.

Operatoren

OperatorNaamGedrag
=Gelijk aanExacte overeenkomst.
!=Niet gelijk aanExacte niet-overeenkomst.
:BevatSubstring-overeenkomst.
!:Bevat nietSubstring-niet-overeenkomst.
>Groter danNumerieke vergelijking.
>=Groter dan of gelijkNumerieke vergelijking.
<Kleiner danNumerieke vergelijking.
<=Kleiner dan of gelijkNumerieke vergelijking.
String-operatoren (=, !=, :, !:) vergelijken beide kanten als strings. Numerieke operatoren (>, >=, <, <=) casten beide kanten naar een getal; als een waarde niet als getal kan worden geparsed, wordt die logregel overgeslagen.

Expressies combineren

  • AND / OR: severity=error AND hostname:web, of severity=info OR severity=warn.
  • Impliciete AND: een spatie tussen expressies betekent AND. severity=error hostname:web is hetzelfde als severity=error AND hostname:web.
  • Nesten met haakjes: message:"API request" AND (severity=info OR severity=warn).
  • Voorrang: AND bindt sterker dan OR.
Elke operator kan binnen een OR-groep worden gebruikt, niet alleen gelijkheid — bijvoorbeeld message:"API request" AND (user.id>1000 OR user.email:"example.com").

Velden

Gegeven een logregel met deze JSON-body:
{
  "message": "API request completed",
  "severity": "info",
  "duration": 156.7,
  "status_code": 200,
  "user": {
    "id": 12345,
    "roles": ["admin", "developer"],
    "location.country": "US"
  }
}
  • Basisvelden: message, severity, hostname en group matchen de top-level velden van de logregel.
  • Geneste JSON: gebruik puntnotatie om in de json-body te reiken, zoals status_code=200 of user.id=12345.
  • JSON-arrays: indexeer array-elementen, zoals user.roles.0=admin.
  • Geëscapete punten: om een letterlijke punt in een sleutelnaam te matchen, escape hem. user.location\.country=US matcht de sleutel location.country binnen user, in plaats van een genest country-object.
  • Standaardveld: een losse term zonder veld matcht message met de bevat-operator. timeout is hetzelfde als message:timeout.
U hoeft attributes. niet voor een veld te zetten of er een typesuffix achter te plakken om een veld op te vragen — verwijs er direct naar op naam. Zie verouderde query- syntax als u oudere queries heeft.

Waarden tussen aanhalingstekens

Plaats waarden die spaties of haakjes bevatten tussen dubbele aanhalingstekens. Anders splitst de spatie de waarde in afzonderlijke expressies die met impliciete AND worden verbonden.
message:"hello world"           matches message containing "hello world"
message:hello world             parsed as message:hello AND message:world
severity=error message:"oh no"  severity equals error AND message contains "oh no"
Alleen dubbele aanhalingstekens worden herkend. Escape binnen een waarde tussen aanhalingstekens een aanhalingsteken met \" en een backslash met \\. Bijvoorbeeld, message:"value with \"quotes\"" matcht de tekst value with "quotes".

Verouderde queryssyntax

Oudere queries sloegen attributen op als getypeerde velden, dus moesten ze attributes. voorvoegen, een typesuffix toevoegen (_string, _int) en een [ ]-lijst gebruiken voor meerdere waarden. De huidige querytaal verwijdert alle drie — verwijs direct naar velden en gebruik OR in plaats van een lijst:
message:"API request" attributes.user_id_int=12345 severity=[info, warn]
Een query die nog steeds de verouderde syntax gebruikt, retourneert een 422 met de legacy_log_query_syntax-foutslug.