@sylphx/cat-http
v0.1.0
Published
HTTP request/response serializers for @sylphx/cat logger
Downloads
4
Readme
@sylphx/cat-http
HTTP request/response serializers for @sylphx/cat logger
0.75 KB • Express/Fastify compatible • Automatic header redaction
Installation
npm install @sylphx/cat @sylphx/cat-httpDescription
Provides standardized serializers for HTTP requests and responses in @sylphx/cat. Automatically extracts relevant information from request/response objects while redacting sensitive headers (authorization, cookies, API keys). Compatible with Express, Fastify, Koa, Next.js, and standard Node.js HTTP objects.
Usage Examples
Express Middleware
import { createLogger } from '@sylphx/cat'
import { httpSerializers } from '@sylphx/cat-http'
import express from 'express'
const logger = createLogger({
serializers: httpSerializers
})
const app = express()
app.use((req, res, next) => {
logger.info({ req }, 'Incoming request')
next()
})
app.get('/users/:id', (req, res) => {
res.json({ id: req.params.id })
logger.info({ req, res }, 'Request completed')
})Output:
{
"level": "info",
"message": "Incoming request",
"req": {
"method": "GET",
"url": "/users/123",
"headers": { "user-agent": "...", "authorization": "[REDACTED]" },
"params": { "id": "123" },
"remoteAddress": "::1"
}
}Standalone Request Serialization
import { createLogger } from '@sylphx/cat'
import { requestSerializer, responseSerializer } from '@sylphx/cat-http'
const logger = createLogger({
serializers: {
req: requestSerializer,
res: responseSerializer
}
})
// In your HTTP handler
logger.info({ req, res }, 'HTTP request processed')Next.js API Route
import { createLogger } from '@sylphx/cat'
import { httpSerializers } from '@sylphx/cat-http'
import type { NextApiRequest, NextApiResponse } from 'next'
const logger = createLogger({
serializers: httpSerializers
})
export default function handler(req: NextApiRequest, res: NextApiResponse) {
logger.info({ req }, 'API request received')
res.status(200).json({ message: 'Success' })
logger.info({ req, res }, 'API request completed')
}API Reference
httpSerializers
Combined serializers object containing both request and response serializers.
import { httpSerializers } from '@sylphx/cat-http'
const logger = createLogger({
serializers: httpSerializers
})Includes:
req- Request serializerrequest- Alias forreqres- Response serializerresponse- Alias forres
requestSerializer(req: any): SerializedRequest
Serializes HTTP request objects.
Extracts:
method- HTTP method (GET, POST, etc.)url- Request URLheaders- HTTP headers (sensitive headers redacted)query- Query parameters (if available)params- Route parameters (if available)remoteAddress- Client IP addressremotePort- Client portprotocol- HTTP/HTTPShttpVersion- HTTP version
Sensitive headers redacted:
authorizationcookiex-api-keyx-auth-tokenx-csrf-tokenx-session-id
responseSerializer(res: any): SerializedResponse
Serializes HTTP response objects.
Extracts:
statusCode- HTTP status codestatusMessage- Status messageheaders- Response headers (sensitive headers redacted)
Sensitive headers redacted:
set-cookieauthorizationx-api-key
Framework Compatibility
Express
app.use((req, res, next) => {
logger.info({ req }, 'Request received')
res.on('finish', () => {
logger.info({ req, res }, 'Request completed')
})
next()
})Fastify
fastify.addHook('onRequest', (request, reply, done) => {
logger.info({ req: request.raw }, 'Request received')
done()
})Koa
app.use(async (ctx, next) => {
logger.info({ req: ctx.request }, 'Request received')
await next()
logger.info({ req: ctx.request, res: ctx.response }, 'Request completed')
})Node.js HTTP
import { createServer } from 'http'
const server = createServer((req, res) => {
logger.info({ req }, 'Request received')
res.writeHead(200)
res.end('Hello')
logger.info({ req, res }, 'Request completed')
})Package Size
- Minified: ~2.2 KB
- Minified + Gzipped: 0.75 KB
- No additional dependencies
Links
Related Packages
- @sylphx/cat - Core logger
- @sylphx/cat-redaction - Advanced PII redaction
- @sylphx/cat-tracing - Distributed tracing
License
MIT © Kyle Zhu
