← Back to docs

Structured Logging

Ship JSON logs from your loader, payload, and dashboard so every event is queryable by session, machine fingerprint, and license key.

Why structured?

Plain-text logs break at scale. Structured logs let you filter bysession_idorfingerprint_hashin seconds. Every Meridian component emits the same envelope so support can trace a license check from loader through payload to dashboard without grep.

Envelope shape

{
  "ts": "2026-05-26T14:02:11.423Z",
  "level": "info",
  "component": "loader",
  "session_id": "c7a1...",
  "fingerprint_hash": "sha256:ab12...",
  "license_key_hash": "sha256:9f3e...",
  "message": "integrity_check_passed",
  "fields": {
    "iat_hash": "sha256:7b11...",
    "elapsed_us": 142
  }
}

Ingestion pipeline

  • Loader → Payload — named pipe or shared memory ring buffer; payload flushes every 30 s or 64 KB.
  • Payload → Edge — HTTPS POST to/api/logs/ingestwith HMAC signature.
  • Edge → Upstash KV — rate-limited write; TTL 7 days per session bucket.

Query examples

From the dashboard, filter by license key hash to see every integrity check, injection event, and heartbeat for a single customer. Combine withlevel:errorto surface tamper attempts in real time.