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 1203msFields 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";