[typescript] 타입스크립트와 GraphQL을 함께 사용하는 트래픽 로깅 방법
웹 애플리케이션에서는 사용자의 요청과 응답에 대한 로그를 남기는 것이 중요합니다. 이를 통해 애플리케이션의 동작을 모니터링하고 디버깅하는 데 도움을 얻을 수 있습니다. 특히 타입스크립트와 GraphQL을 함께 사용하는 경우, 이러한 로깅을 구현하는 방법에 대해 알아보겠습니다.
1. GraphQL 리졸버에서 로깅하기
GraphQL 서버에서는 각각의 리졸버(resolver)에서 요청과 응답에 대한 로그를 남길 수 있습니다. 타입스크립트로 작성된 GraphQL 서버에서는 다음과 같은 방법으로 리졸버에서 로그를 남길 수 있습니다:
import { MiddlewareFn } from "type-graphql";
const loggingMiddleware: MiddlewareFn<MyContext> = async ({ args, context }, next) => {
console.log(`Request for ${context.req.url} with args: ${JSON.stringify(args)}`);
const result = await next();
console.log(`Response: ${JSON.stringify(result)}`);
return result;
};
위의 예시에서 loggingMiddleware
는 GraphQL 리졸버의 미들웨어로 사용될 수 있습니다. 이를 통해 각각의 요청과 응답에 대한 로그를 쉽게 남길 수 있습니다.
2. HTTP 요청 로깅하기
또한, 웹 애플리케이션에서는 HTTP 요청에 대한 로깅도 중요합니다. 타입스크립트로 작성된 Express 서버에서는 다음과 같은 방법으로 HTTP 요청에 대한 로그를 남길 수 있습니다:
import express, { Request, Response, NextFunction } from "express";
const app = express();
app.use((req: Request, res: Response, next: NextFunction) => {
console.log(`${req.method} request for ${req.url}`);
next();
});
위의 예시에서 Express 애플리케이션의 use
메서드를 통해 간단히 모든 HTTP 요청에 대한 로그를 남길 수 있습니다.
이러한 방법을 통해 타입스크립트와 GraphQL을 함께 사용하는 애플리케이션에서 트래픽 로깅을 구현할 수 있습니다.