[javascript] Next.js에서의 로깅(Logging) 처리 방법은 어떤 것이 있나요?
  1. 기본 로깅 설정: Next.js는 기본적으로 개발 및 배포 모드에서 로깅을 제공합니다. next.config.js 파일에서 dev 속성을 변경하여 로그 레벨을 조절할 수 있습니다.

    // next.config.js
    module.exports = {
      devIndicators: {
        autoPrerender: false,
      },
      env: {
        customKey: 'customValue',
      },
      target: 'serverless',
      reactStrictMode: true,
      // 로깅 레벨 설정
      // production: error
      // development: warn
      distDir: 'build',
      experimental: {
        modern: true,
        polyfillsOptimization: true,
      },
    };
    

    로깅 레벨은 production 모드일 때 error, development 모드일 때 warn으로 설정됩니다.

  2. console.log 사용: 가장 간단한 로깅 방법은 console.log를 사용하는 것입니다. 이를 이용하여 특정 시점에서 변수의 값을 확인하거나 디버깅 할 수 있습니다.

    console.log("로그 메시지");
    

    하지만 console.log는 개발 중에만 사용하고 배포된 코드에 포함시키지 않는 것이 좋습니다.

  3. 외부 로깅 라이브러리: Next.js에서는 다양한 외부 로깅 라이브러리를 사용할 수 있습니다. 대표적으로 winston, pino, log4js 등이 있습니다. 이러한 라이브러리를 사용하면 로그를 파일이나 데이터베이스에 기록할 수 있고 로그 레벨 및 로그 형식을 설정할 수도 있습니다.

    const winston = require('winston');
    
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      defaultMeta: { service: 'your-service-name' },
      transports: [
        new winston.transports.Console(),
        new winston.transports.File({ filename: 'logfile.log' }),
      ],
    });
    
    logger.info('로그 메시지');
    

    이 예시에서는 winston 로깅 라이브러리를 사용하고 있으며, 로그 레벨을 info로 설정하고 콘솔 및 파일로 로그를 출력하도록 구성하였습니다. 다른 로깅 라이브러리를 사용할 때도 비슷한 방식으로 설정할 수 있습니다.

위의 방법 중 하나를 선택하여 Next.js 애플리케이션에서 로깅 처리를 구현할 수 있습니다. 로깅은 애플리케이션을 보다 안정적이고 효율적으로 관리하는 데 도움이 되므로, 적절하게 활용하는 것이 중요합니다.

참고 자료: