[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을 함께 사용하는 애플리케이션에서 트래픽 로깅을 구현할 수 있습니다.

참고 자료