[typescript] REST API 호출 시 로깅 구현 방법

REST API를 호출할 때, 요청과 응답에 대한 로깅은 애플리케이션의 디버깅 및 성능 모니터링에 매우 중요합니다. TypeScript에서 REST API 호출 시 로깅을 구현하는 방법에 대해 설명하겠습니다.

1. Axios와 Winston 라이브러리 설치

먼저 Axios와 Winston 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 두 라이브러리를 설치합니다.

npm install axios winston

2. Axios 인터셉터 설정

Axios를 사용하여 REST API를 호출할 때, 인터셉터를 설정하여 요청과 응답을 가로채고 로깅할 수 있습니다. 다음은 Axios 인터셉터를 설정하는 예시입니다.

import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
import winston from 'winston';

const logger = winston.createLogger({
  transports: [new winston.transports.Console()],
});

axios.interceptors.request.use((config: AxiosRequestConfig) => {
  logger.info('Request:', config);
  return config;
});

axios.interceptors.response.use(
  (response: AxiosResponse) => {
    logger.info('Response:', response);
    return response;
  },
  (error: any) => {
    logger.error('Error:', error);
    return Promise.reject(error);
  }
);

위 코드에서 axios.interceptors.request.useaxios.interceptors.response.use를 사용하여 요청과 응답을 로깅합니다.

3. 로깅 설정

Winston 라이브러리를 사용하여 로깅을 설정합니다. 위 예시에서는 콘솔에 로그를 출력하도록 설정하였지만, 파일이나 외부 서버에 로그를 기록하는 등 다양한 방식으로 로깅을 구성할 수 있습니다.

4. 사용 예시

이제 REST API를 호출하는 코드에서는 Axios를 사용하면 자동으로 로깅이 적용됩니다.

import axios, { AxiosResponse } from 'axios';

axios.get('https://api.example.com/data')
  .then((response: AxiosResponse) => {
    console.log('Data:', response.data);
  })
  .catch((error: any) => {
    console.error('Error:', error);
  });

로깅을 통해 요청과 응답의 상세 정보를 확인할 수 있으므로, 문제 해결이나 성능 튜닝에 도움이 될 것입니다.

이렇게 TypeScript에서 REST API 호출 시 로깅을 구현할 수 있습니다. 로깅은 애플리케이션의 안정성과 신뢰성을 높이는 데 중요한 역할을 합니다.

참고 자료