Winston 및 Morgan을 사용한 고급 Node.js API 로깅

WBOY
풀어 주다: 2024-07-20 07:37:29
원래의
659명이 탐색했습니다.

Advanced Node.js API Logging with Winston and Morgan

로깅은 모든 애플리케이션에서 중요한 부분으로, 애플리케이션 동작에 대한 통찰력을 제공하고 문제 디버깅을 돕고 성능을 모니터링합니다. Node.js API에서는 Winston 및 Morgan과 같은 라이브러리를 사용하여 고급 로깅을 달성할 수 있습니다. 이 문서에서는 Node.js API의 고급 로깅을 위해 Winston 및 Morgan을 설정하고 사용하는 방법을 안내합니다.

고급 로깅이 필요한 이유
다음과 같은 여러 가지 이유로 고급 로깅이 필수적입니다.

  • 디버깅 및 문제 해결: 로그는 문제를 진단할 때 매우 유용한 애플리케이션 이벤트의 자세한 기록을 제공합니다. 이는 오류의 근본 원인을 식별하고 문제로 이어지는 일련의 작업을 이해하는 데 도움이 됩니다.

  • 모니터링 및 유지 관리: 로그를 지속적으로 모니터링하면 개발자가 애플리케이션의 상태와 성능을 추적할 수 있습니다. 로그를 분석하면 이상 징후, 성능 병목 현상, 잠재적 문제가 심각해지기 전에 이를 감지할 수 있습니다.

  • 감사 및 규정 준수: 많은 애플리케이션, 특히 민감한 데이터를 처리하는 애플리케이션의 경우 자세한 로그를 유지하는 것이 규정 준수 요구 사항입니다. 로그는 감사 및 규정 준수에 중요할 수 있는 사용자 작업 및 시스템 변경 기록을 제공합니다.

  • 보안: 로그인 시도 실패, 무단 액세스, 의심스러운 활동 등 보안 관련 이벤트를 기록하는 것은 보안 위협을 탐지하고 대응하는 데 매우 중요합니다. 고급 로깅은 안전한 애플리케이션 환경을 유지하는 데 도움이 됩니다.

목차

  1. 윈스턴과 모건 소개
  2. Node.js 프로젝트 설정
  3. Winston 및 Morgan 설치
  4. 고급 로깅을 위한 Winston 구성
  5. HTTP 요청 로깅을 위한 Morgan 통합
  6. 윈스턴과 모건의 결합
  7. 로깅 형식 사용자 정의
  8. 다른 전송 수단에 로깅
  9. 오류 처리 및 로깅
  10. 결론

1.윈스턴과 모건 소개
Winston은 다재다능하고 사용하기 쉬운 Node.js용 로깅 라이브러리입니다. 로그 메시지에 대한 다중 전송을 지원하므로 다양한 형식과 수준으로 다양한 위치(콘솔, 파일, 원격 서버 등)에 로그할 수 있습니다.

Morgan은 Node.js용 HTTP 요청 로거 미들웨어입니다. 사전 정의된 형식으로 HTTP 요청 로깅을 단순화하므로 API에서 들어오는 요청과 응답을 추적하는 데 매우 유용할 수 있습니다.

2.Node.js 프로젝트 설정
먼저, 아직 Node.js 프로젝트가 없다면 새 Node.js 프로젝트를 생성하세요.

mkdir node-api-logging
cd node-api-logging
npm init -y
로그인 후 복사

3.윈스턴과 모건 설치
Express와 함께 Winston 및 Morgan을 설치합니다(기본 API 설정용):

npm install express winston morgan
로그인 후 복사

4.고급 로깅을 위한 Winston 구성
Winston을 구성하기 위해 logger.js 파일을 만듭니다.

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;
로그인 후 복사

5.HTTP 요청 로깅을 위한 Morgan 통합
Morgan을 Winston과 통합하려면 middleware/logger.js 파일을 만드세요.

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;
로그인 후 복사

6.윈스턴과 모건의 합체
Winston과 Morgan을 Express 애플리케이션에 통합하세요.

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});
로그인 후 복사

7.로깅 형식 사용자 정의
Winston 및 Morgan의 로깅 형식을 사용자 정의할 수 있습니다. 예를 들어 헤더, 쿼리 매개변수 또는 응답 시간과 같은 추가 요청 세부정보를 기록할 수 있습니다.

8.다른 전송에 로깅
Winston은 다양한 전송을 지원합니다. 메시지의 심각도에 따라 다양한 대상에 기록할 수 있습니다. 예를 들어 오류 로그를 원격 로깅 서버나 Loggly 또는 Papertrail과 같은 타사 서비스로 보낼 수 있습니다.

9.오류 처리 및 기록
문제를 식별하고 해결하려면 적절한 오류 처리 및 로깅이 필수적입니다. 오류 처리 미들웨어가 Winston을 사용하여 자세한 오류 정보를 기록하는지 확인하세요.

10.결론
Winston과 Morgan을 결합하면 Node.js API에서 고급 로깅을 달성할 수 있습니다. Winston은 애플리케이션 수준 이벤트 로깅을 위한 강력한 프레임워크를 제공하는 반면 Morgan은 HTTP 요청 로깅을 단순화합니다. 이를 통해 애플리케이션 모니터링 및 디버깅 능력을 향상시키는 포괄적인 로깅 솔루션을 제공합니다.

최종 코드 개요
다음은 파일과 내용을 간단히 요약한 것입니다.

  • logger.js: 사용자 정의 형식 및 전송으로 Winston을 구성합니다.
  • middleware/logger.js: Morgan을 Winston과 통합합니다.
  • app.js: Winston과 Morgan을 모두 통합하는 Express 애플리케이션을 설정합니다. 이 설정을 사용하면 Node.js API를 효과적으로 기록하고 모니터링할 수 있어 유지 관리 및 디버깅이 더 쉬워집니다.

위 내용은 Winston 및 Morgan을 사용한 고급 Node.js API 로깅의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!