Nâng CaoNestJS iconNestJS

Structured Logging với Winston trong NestJS?

Logging chuẩn production cần: structured JSON, log levels, request correlation ID, không log sensitive data.

Setup Winston với nest-winston:

typescript
import { WinstonModule } from 'nest-winston';
import { transports, format } from 'winston';

WinstonModule.forRoot({
  level: process.env.LOG_LEVEL || 'info',
  format: format.combine(
    format.timestamp(),
    format.errors({ stack: true }),
    format.json(),  // Structured JSON cho log aggregation
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'error.log', level: 'error' }),
  ],
})

Request correlation với Middleware:

typescript
app.use((req, res, next) => {
  req.correlationId = req.headers['x-correlation-id'] ?? uuid();
  res.setHeader('x-correlation-id', req.correlationId);
  next();
});

Inject Logger service và dùng this.logger.log/error/warn với context.

Pitfall: không dùng console.log trong production code — không structured, không có levels.

Xem toàn bộ NestJS cùng filter theo level & chủ đề con.

Mở danh sách NestJS