nest-request-interceptor
Version:
Lightweight HTTP and RPC request logging interceptors for NestJS with decorators to skip or deduplicate logs.
100 lines (71 loc) • 2.71 kB
Markdown
Lightweight HTTP and RPC request logging interceptors for NestJS. Color-coded, zero-config, with decorators to silence or deduplicate noisy routes.
```sh
npm install nest-request-interceptor
```
```typescript
import { NestFactory, Reflector } from "@nestjs/core";
import { HTTPInterceptor, RPCInterceptor } from "nest-request-interceptor";
// HTTP
const app = await NestFactory.create(AppModule);
app.useGlobalInterceptors(new HTTPInterceptor(app.get(Reflector)));
// RPC (microservices)
const micro = await NestFactory.createMicroservice(AppModule, { transport: Transport.RMQ, ... });
micro.useGlobalInterceptors(new RPCInterceptor());
```
```
[] POST /api/users 201 12ms
[] GET /api/users 200 3ms
[] GET /api/users/999 404 2ms — User not found
[] RECEIVED - chats:request
[] EMIT - chats:request 1523ms
[] REQUEST abc123 customers:read
[] SEND abc123 customers:read 8ms
```
**Colors:** green (2xx), blue (3xx), yellow (4xx), red (5xx).
Completely silences logging for a route. No logs at all.
```typescript
import { SkipLogging } from "nest-request-interceptor";
@SkipLogging()
@Get("internal/metrics")
metrics() { return this.metricsService.collect(); }
```
Logs the first request, then suppresses identical subsequent requests. Logs again when the response status changes or an error occurs. Ideal for health checks and readiness probes.
```typescript
import { SkipNoise } from "nest-request-interceptor";
@SkipNoise()
@Get("health-check")
healthCheck() { return { status: "ok" }; }
```
**Behavior:**
- First `GET /health-check` → logged
- Next 1000 identical `GET /health-check 200` → suppressed
- `GET /health-check 500` (error) → logged, cache reset
- Next `GET /health-check 200` → logged again
```typescript
@SkipLogging() // never log — use for internal/debug routes
@SkipNoise() // log once — use for probes and polling endpoints
// (no decorator) // always log — default for all routes
```
| Export | Type | Description |
|---|---|---|
| `HTTPInterceptor` | `NestInterceptor` | Logs HTTP method, URL, status, duration |
| `RPCInterceptor` | `NestInterceptor` | Logs RPC pattern, message ID, duration |
| `SkipLogging` | Decorator | Suppress all logging for a route |
| `SkipNoise` | Decorator | Deduplicate identical log entries |
| `Log` | Function | Timestamped console.log utility |
- NestJS 10, 11+
- TypeScript 5, 6
- Express 4, 5
- Any RMQ/Redis/NATS transport
MIT