nest g middleware logger
CLI에 위와 같이 입력해서 ‘logger’라는 middleware를 생성할 수 있다.
logger.middleware.ts
import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { Response, Request } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
// nestjs는 logging을 할 때 logger라는 class를 사용
private logger = new Logger('HTTP');
use(req: Request, res: Response, next: () => void) {
// express의 app.use와 비슷
// response에 대한 결과 값도 logging
res.on('finish', () => {
this.logger.log(req.ip, req.method, req.originalUrl); // 요청 정보 logging
// console.log('logger', req.ip);
// console.log(req.url);
this.logger.log(res.statusCode); // 반환했을 때의 정보 logging
}); // response과 완료되었을 때의 event
next();
}
}
use()
는 express의 app.use
와 비슷하다.
nest.js에서는 logging 할 때 private logger = new Logger('HTTP');
라는 logger class를 쓴다.
res.on(’finish’)
의 경우(response가 끝난 경우) callback 함수 안에서 response에 대한 결과 값도 logging 할 수 있다.
ex)
res.on('finish', () => {
this.logger.log(req.ip, req.method, req.originalUrl); // 요청 정보 logging
// console.log('logger', req.ip);
// console.log(req.url);
this.logger.log(res.statusCode); // 반환했을 때의 정보 logging
}); // response과 완료되었을 때의 event
요청 정보 logging
this.logger.log(req.ip, req.method, req.originalUrl);