#How to attach response of http to every log in nestjs-pino

4 messages · Page 1 of 1 (latest)

quiet rune
#

This is my Logger module

LoggerModule.forRoot({
      pinoHttp: {
        genReqId: () => uuidv4(),
        transport:
          process.env.NODE_ENV === 'local'
            ? {
                target: 'pino-pretty',
                options: {
                  colorize: true,
                  ignore: 'pid,hostname',
                  singleLine: true,
                },
              }
            : undefined,
        formatters: {
          level: (label: string, number: number) => ({
            level: number,
            severity: label.toUpperCase(),
          }),
        },
        redact:
          process.env.NODE_ENV === 'local'
            ? {
                paths: ['req.headers', 'res.headers'], // Remove all request and response headers
                remove: true,
              }
            : undefined,
        autoLogging: false,
      },
    }),

From my code logger is attach req already but I want to add response to every log either normal request of error is can do it?

sterile bane
#

.

import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
import { Logger } from 'nestjs-pino';

@Injectable()
export class LoggingMiddleware implements NestMiddleware {
constructor(private readonly logger: Logger) {}

use(req: Request, res: Response, next: NextFunction) {
const { method, url } = req;

// Log request
this.logger.info({ req, method, url }, 'Request started');

// Attach the response info after request processing
res.on('finish', () => {
  const { statusCode } = res;
  // Log response status and body if needed
  this.logger.info({ res, statusCode }, 'Request completed');
});

next();

}
}

#

Then, in your module, make sure to register the middleware