Catalog npm
PACKAGE EXPLORERView in registry

@021.is/spine-telemetry

npm

Pino structured JSON logger + AsyncLocalStorage request context + opt-in OpenTelemetry SDK wire-up (withSpan helper, OTLP HTTP exporter).

Versions collected2
Direct dependencies6From release 0.4.3
Last observed20 Oct, 22:00 UTC

README

Current package documentation

@021.is/spine-telemetry

Pino structured JSON logger with Loki-friendly base fields + AsyncLocalStorage-backed request context. Every log line automatically tagged with request_id when inside a request scope — no per-log boilerplate.

Use

// src/lib/logger.ts
import { makeLogger } from "@021.is/spine-telemetry";

export const log = makeLogger({
  service: "my-app",
  cluster: "eu-1",
  env: process.env.NODE_ENV,
  level: "info",
});

Request context (Next.js middleware or route wrapper)

import { newRequestId, withRequestContext } from "@021.is/spine-telemetry";

export async function middleware(req: Request) {
  const requestId = newRequestId();
  return withRequestContext({ requestId, path: req.url }, async () => {
    return NextResponse.next();
  });
}

Now every log.info(...) inside the request chain (across awaits, across files) emits:

{
  "level": "info",
  "time": "2026-05-25T12:00:00.000Z",
  "service": "my-app",
  "cluster": "eu-1",
  "env": "production",
  "request_id": "req_lvxn9k0a1b2c3d",
  "msg": "..."
}

Loki labels (service, cluster) make per-app filtering instant in Grafana.

Why AsyncLocalStorage

Don't pass logger or requestId through every function argument. The async store does it for you — works across await, setTimeout, Promise.all, etc.

What's NOT included (yet)

  • OpenTelemetry tracer wire-up — planned for next release.
  • Pino transport for Loki HTTP push — for now, write to stdout + ship via Vector.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 2

Collected releases
VersionPublishedDirect dependenciesOpen version
0.4.3Registry latest28 May 20266
0.4.028 May 20266

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
021is/spine-ts

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:00 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:781c5468aa038f5acea40e240c675668441cbe60782176af88b334a323307d09