Blyp Docs

Express

Import from @blyp/core/express.

import express from "express";
import {
  createLogger,
  createExpressErrorLogger,
} from "@blyp/core/express";

const app = express();

app.use(createLogger({
  level: "info",
  clientLogging: true,
}));

app.get("/hello", (req, res) => {
  req.blypLog.info("express-route");
  res.status(200).send("ok");
});

app.use(createExpressErrorLogger());
app.use((error, _req, res, _next) => {
  res.status(500).json({ message: error.message });
});

Why the extra error middleware matters

createExpressErrorLogger() stores the thrown error on res.locals so Blyp can emit an http_error record when the response finishes.

What auto-logged requests look like

With automatic request logging enabled, Blyp emits terminal output like:

[INFO]  GET  /health        200  2ms
[INFO]  POST /checkout      200  143ms
[INFO]  GET  /users/42      404  8ms
[ERROR] POST /payments      500  1203ms

Fields included automatically: method, path, status code, and duration.

In production (NDJSON):

{"level":"info","time":1710000000000,"msg":"GET /health","type":"http_request","method":"GET","url":"/health","statusCode":200,"responseTime":2}
{"level":"info","time":1710000000001,"msg":"POST /checkout","type":"http_request","method":"POST","url":"/checkout","statusCode":200,"responseTime":143}

Relevant types

import type {
  ExpressLoggerConfig,
  ExpressLoggerMiddleware,
  ExpressErrorLoggerMiddleware,
} from "@blyp/core/express";