@logfrog/node
v0.1.0
Published
LogFrog API tracing middleware for Node.js — Express and Fastify request tracing shipped to your LogFrog dashboard.
Maintainers
Readme
@logfrog/node
Request tracing middleware for LogFrog. Records every HTTP request your API serves — method, route, status, duration, client IP — and ships it in batches to your LogFrog Traces dashboard.
Supports Express (v4/v5) and Fastify (v4/v5). Zero runtime dependencies; uses the built-in fetch (Node 18+).
Install
npm install @logfrog/nodeExpress
import express from "express";
import { logfrogExpressMiddleware } from "@logfrog/node/express";
const app = express();
app.use(logfrogExpressMiddleware({
ingestUrl: "https://api.logfrog.io/api/ingest/traces/<your-token>",
service: "my-api",
}));
// …your routesYour ingest URL (with the project token baked in) is on the Traces page of your LogFrog dashboard.
Fastify
import Fastify from "fastify";
import { registerLogfrogFastify } from "@logfrog/node/fastify";
const app = Fastify();
registerLogfrogFastify(app, {
ingestUrl: "https://api.logfrog.io/api/ingest/traces/<your-token>",
service: "my-api",
});
// …your routesregisterLogfrogFastify returns the underlying tracer and automatically flushes pending spans when the Fastify instance closes.
Options
Both middlewares accept:
| option | type | description |
| --- | --- | --- |
| ingestUrl | string (required) | Your project's trace ingest URL from the dashboard. |
| service | string | Service name shown in the Traces UI. |
| ignore | (req) => boolean | Return true to skip recording a request (e.g. health checks). |
| routeResolver | (req) => string \| undefined | Express only — override route template detection. |
Spans are batched (25 per POST) and flushed every 2 seconds. Failed batches are retried on the next flush with a bounded queue, so LogFrog outages never back-pressure your API.
Custom spans
For anything that isn't Express/Fastify, use the tracer directly:
import { createLogfrogTracer } from "@logfrog/node";
const tracer = createLogfrogTracer({
ingestUrl: "https://api.logfrog.io/api/ingest/traces/<your-token>",
service: "worker",
});
tracer.record({
method: "POST",
path: "/jobs/resize-image",
status_code: 200,
duration_ms: 132,
timestamp: Date.now(),
});
// on shutdown
await tracer.flush();
tracer.stop();License
MIT
