TXTRAX LRS
Community

Logging API

The logging API lets an authorized client read the LRS activity logs and manage the log channels that decide where new log entries are dispatched. Authentication, value/field types, the shared query object and error responses are common to all TRAX APIs.

Contents: Logs · Log channels

Unlike the data API, the logging endpoints are not store-scoped — they live directly under the client path:

/trax/api/gateway/clients/{client}/...

Path segments:

  • {client} — your API client id.

Getting access

  • Enable the API. This API is gated by the LOGGING_API feature toggle (Settings → App). When off, the machine-token API is unavailable (the console UI is unaffected).
  • Client permission. The calling client must have the logging/all permission enabled (Clients → edit → Permissions). Authentication is HTTP Basic — see Authentication.
  • Base path. Copy your client's endpoint (…/clients/{client}) from the Clients page (the ⓘ info button) and append logs or log-channels.

Logs

The stored log records: xAPI/HTTP/console/stream/auth events and uncaught exceptions, each with a severity level and a functional context.

GET /trax/api/gateway/clients/{client}/logs

This is a filter-list read. Pass the query object as query-string parameters (JSON-encoding filters and options) — use sort / limit / skip / after / before there for ordering and pagination. filters accepts only the whitelisted keys below; any other key is rejected (400).

Filters

Name Type Description
types stringified array Keep only these log types. JSON-encoded array of strings, e.g. ["xapi","console"]. Known types: xapi, ui, console, stream, auth, exception.
levels stringified array Keep only these exact severity levels. JSON-encoded array of integers 07, e.g. [4,5]. See the level table below.
min_level integer (07) Keep entries at this level or higher. Example: 4 (Error and above).
store string Keep only entries recorded for this store id. Example: default

Severity levels (level column / levels / min_level values):

Value Name
0 Debug
1 Info
2 Notice
3 Warning
4 Error
5 Critical
6 Alert
7 Emergency

Example response

{
  "data": [
    {
      "id": 1842,
      "type": "xapi",
      "level": 4,
      "event": "failed",
      "description": "Bad Request",
      "data": { "version": "1.0.3" },
      "service": "xapi",
      "api": "statement",
      "method": "POST",
      "store": "default",
      "client": "app",
      "stored": "2024-06-01T09:00:00.363058Z"
    }
  ]
}

Response fields

Field Type Description
id integer Auto-increment log row id.
type string Log type: xapi, ui, console, stream, auth, or exception.
level integer (07) Severity level (see the level table above).
event string The event within the type, e.g. passed, failed, started, logged_in, authentication_failed.
description string | null Human-readable message.
data object Type-specific context (e.g. exception, settings, feedback, xAPI version).
service string | null Service that produced the entry.
api string | null API entry point.
method string | null HTTP method (or console/stream context).
store string | null Store id the entry relates to.
client string | null Client id the entry relates to.
stored ISO-8601 date-time When the entry was recorded (UTC, microsecond precision).

Log channels

The configured log channels — each pairs a Laravel/Monolog channel type with the log types and minimum severity it should receive. This is a full CRUD resource.

List channels

GET /trax/api/gateway/clients/{client}/log-channels

Returns all channels as { "data": [ /* channels */ ] }.

Find a channel

GET /trax/api/gateway/clients/{client}/log-channels/{channel}

{channel} is the channel id. Returns { "data": { /* channel */ } }, or 404 if unknown.

Create a channel

POST /trax/api/gateway/clients/{client}/log-channels

Update a channel

PUT /trax/api/gateway/clients/{client}/log-channels/{channel}

Body (create and update share the same rules)

Name Type Description
type enum (required) The channel driver. One of database, single, daily, slack, papertrail, syslog, errorlog, stderr.
log_types array The log types this channel receives, e.g. ["xapi","exception"]. Optional; omit / null for all types.
min_level integer (07) (required) Minimum severity the channel receives (see the level table under Logs).

A 422 is returned when a value fails validation (e.g. an unknown type or an out-of-range min_level). Both create and update return { "data": { /* channel */ } } with 200.

Example response

{
  "data": {
    "id": 3,
    "type": "daily",
    "log_types": ["xapi", "exception"],
    "min_level": 4,
    "created_at": "2024-06-01T09:00:00.000000Z",
    "updated_at": "2024-06-01T09:00:00.000000Z"
  }
}

Response fields

Field Type Description
id integer Auto-increment channel id.
type string The channel driver (database, single, daily, slack, papertrail, syslog, errorlog, stderr).
log_types array The log types the channel receives.
min_level integer (07) Minimum severity the channel receives.
created_at ISO-8601 date-time Row creation timestamp.
updated_at ISO-8601 date-time Row update timestamp.

Delete a channel

DELETE /trax/api/gateway/clients/{client}/log-channels/{channel}

Removes the channel. Returns 204 with an empty body.

Clear all channels

DELETE /trax/api/gateway/clients/{client}/log-channels

Removes all channels. Returns 204 with an empty body.