-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add: logging middleware #135
base: dev
Are you sure you want to change the base?
Changes from 1 commit
032c368
38dc4f7
9edc2fc
43753cf
96ea722
c9280c0
33b669d
7643d42
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
import { Module } from '@nestjs/common'; | ||
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; | ||
import { APP_GUARD } from '@nestjs/core'; | ||
import { JwtService } from '@nestjs/jwt'; | ||
import { AppController } from './app.controller'; | ||
|
@@ -29,6 +29,7 @@ | |
import { ClsPluginTransactional } from '@nestjs-cls/transactional'; | ||
import { PrismaService } from '@src/prisma/prisma.service'; | ||
import { TransactionalAdapterPrisma } from '@nestjs-cls/transactional-adapter-prisma'; | ||
import { AppLoggerMiddleware } from '@src/common/middleware/http.logging.middleware'; | ||
|
||
@Module({ | ||
imports: [ | ||
|
@@ -83,7 +84,7 @@ | |
{ | ||
provide: APP_GUARD, | ||
useFactory: () => { | ||
const env = process.env.NODE_ENV; | ||
}, | ||
}, | ||
JwtCookieGuard, | ||
|
@@ -92,4 +93,8 @@ | |
JwtService, | ||
], | ||
}) | ||
export class AppModule {} | ||
export class AppModule implements NestModule { | ||
configure(consumer: MiddlewareConsumer): any { | ||
consumer.apply(AppLoggerMiddleware).forRoutes('*'); | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰 결과는 다음과 같습니다:
이러한 점들을 고려하여 코드를 개선하면 더욱 안정적이고 효율적인 애플리케이션을 만들 수 있을 것입니다. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
import { Injectable, NestMiddleware, Logger } from '@nestjs/common'; | ||
|
||
import { Request, Response, NextFunction } from 'express'; | ||
|
||
@Injectable() | ||
export class AppLoggerMiddleware implements NestMiddleware { | ||
private logger = new Logger('HTTP'); | ||
|
||
use(request: Request, response: Response, next: NextFunction): void { | ||
const { ip, method, path: url } = request; | ||
const userAgent = request.get('user-agent') || ''; | ||
|
||
response.on('close', () => { | ||
const { statusCode } = response; | ||
const contentLength = response.get('content-length'); | ||
|
||
this.logger.log( | ||
`${method} ${url} ${statusCode} ${contentLength} - ${userAgent} ${ip}`, | ||
); | ||
}); | ||
|
||
next(); | ||
} | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰 결과는 다음과 같습니다: 장점:
잠재적 문제:
개선 제안:
this.logger.log(JSON.stringify({
method,
url,
statusCode,
contentLength,
userAgent,
ip,
}));
이와 같은 점들을 개선하면 더욱 안정적이고 사용자 친화적인 로그 시스템이 될 것입니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰 결과는 다음과 같습니다: 버그 리스크
개선 제안
총평로깅 인터셉터로써 기능은 잘 유지되고 있으나, 약간의 예외 처리와 코드 정리가 필요합니다. 전반적으로 안정성과 가독성을 높이는 방향으로 개선할 수 있을 것입니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이 코드 패치에 대한 간단한 코드 리뷰를 제공하겠습니다. 버그 위험 요소:
개선 제안:
이러한 점들을 고려하여 코드의 안정성과 가독성을 높일 수 있습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 리뷰를 진행하겠습니다. 코드 리뷰 요약
버그 위험
개선 사항
요약하자면, 매우 잘 작성된 코드이며 몇 가지 세부적인 개선을 통해 더욱 견고한 시스템으로 발전할 수 있을 거라 생각됩니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 패치에 대한 간단한 검토를 하겠습니다.
개선 제안 및 버그 위험
미사용 코드 주석 처리:
LoggingMiddleware
임포트 문이 주석 처리되어 있는데, 현재 코드에서 사용되지 않는 경우 지워버리는 것이 깔끔합니다. 불필요한 코드가 프로젝트 관리에 혼란을 줄 수 있습니다.NestModule 구현:
NestModule
인터페이스가 추가되었으나, 실제로 이를 구현하는 코드가 없습니다. 필요하다면configure()
메서드를 추가하여 미들웨어를 설정할 수 있습니다. 그렇지 않으면 불필요한 의존성이 될 수 있습니다.주석의 용도:
모듈 구조:
ClsModule
이나PrismaService
의 목적이 명확하지 않다면 검토해보는 것이 좋습니다.코드 일관성:
이러한 점들을 고려하여 코드를 개선하면 더 견고하고 이해하기 쉬운 모듈을 만들 수 있을 것입니다.