-
Nest.js Logger Middleware(provider,consumer)FrameWork/Nest.js 2022. 7. 10. 15:34
어떤 대상이 어떤 것을 요청했는지 출력해주는 middleware
nest g middleare
Middleware 공급자 생산
DI가 가능하기 때문에 @Injectable 데코레이터가 붙어있다. express와 비슷하게 use() 메소드를 통해 middleware를 사용할 수 있다. req: Request안에는 요청하는 대상에대한 정보가 다 담겨있다.
Middleware를 DI하는 방법
@Module()에서는 middleware를 위한 consumer로써의 사용을 표시하기 위한 공간이 없기 때문에 configure() module의 메서드를 사용해서 middleware 사용을 표시해주어야 한다. 또한 middleware를 consumer가 되는 module은 NestModule 인터페이스를 구현해야한다.
apply메서드 뒤에 체인으로 붙은 .forRotues()메서드는 특정 router에 바인딩을 위한 것으로 특정 module의 entry point가되는 URL 키워드를 넣으면 해당 module과 middleware가 바인딩된다. 위 코드 처럼 와일드카드를 사용하면 전체 URL의 entry poin에 apply 메소드의 인자로 들어간 middleware를 바인딩 한다는 의미이다.
Nest.js에서 Logger
Nest.js 같은 경우는 logging을 해줄때 Logger라는 class를 사용해주면 된다. 위 코드는 HTtP 프로토콜에 대한 logging을 하겠다는 의미이다.
Logger 인스턴스 사용
console.log대신 logger 인스턴스를 사용해서 log를 찍어준다.
Response에 대한 결과 값까지 logging하기
Response 객체의 on 메서드를 사용할 수 있다 on 메서드의 첫번째 인자로는 어떤 event가 발생했는지를 넣고, 두번째 인자로 Response의 statusCode를 찍는 callback 함수를 넣는다.
'FrameWork > Nest.js' 카테고리의 다른 글
Nest.js Pipes(변환, 유효성 검사) (0) 2022.07.11 Nest.js Exception Filter (0) 2022.07.11 Nest.js-TypeOrm 관계 (0) 2022.07.07 JWT와 로그인 서비스& 순환 참조 모듈 (0) 2022.07.03 Nest.js 개요 및 객체 지향 디자인 패턴 3 (Exception filter & Pipes) (0) 2022.06.20