"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Node.js 앱에 대한 로깅 모범 사례

Node.js 앱에 대한 로깅 모범 사례

2024-08-23에 게시됨
검색:386

Logging Best Practices For Your Node.js App

Node.js 개발자로서 로깅은 애플리케이션 디버깅, 모니터링, 유지 관리에 있어서 거의 모든 것입니다. 하지만 로깅 모범 사례를 사용하고 있습니까? Node.js 앱을 다음 단계로 끌어올릴 수 있는 몇 가지 로깅 기술을 살펴보겠습니다.

자세한 내용은 전체 블로그 게시물을 확인하세요.

1. 윈스턴: 스위스 군용 벌목용 칼

? 도구: 윈스턴
? 설명: Node.js를 위한 다목적 로깅 라이브러리
? 주요 특징:

  • 다양한 전송 옵션(콘솔, 파일, 데이터베이스)
  • 사용자 정의 가능한 로그 수준
  • 다양한 형식의 로그인 지원(JSON, 일반 텍스트)
javascriptCopyconst winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

2. Morgan: HTTP 요청 로거 미들웨어

? 도구: 모건
? 설명: Express.js
에서 HTTP 요청 로깅을 단순화합니다. ? 주요 특징:

  • 사전 정의된 로깅 형식
  • 맞춤형 토큰 지원
  • Express.js와 쉽게 통합
javascriptCopyconst express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

3. Bunyan: Node.js용 JSON 로깅

? 도구: Bunyan
? 설명: Node.js 애플리케이션에 대한 구조화된 JSON 로깅
? 주요 특징:

  • 기본적으로 JSON 로그 형식
  • 하위 로거 지원
  • 로그 보기를 위한 내장 CLI
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

log.info("Hi");
log.warn({lang: 'fr'}, "Au revoir");

4. Pino: 초고속 Node.js 로거

? 도구: 피노
? 설명: JSON 출력을 통한 낮은 오버헤드 로깅
? 주요 특징:

  • 매우 빠른 성능
  • 자동 로그 순환
  • 어린이 로거 지원
javascriptCopyconst pino = require('pino');
const logger = pino();

logger.info('hello world');
logger.error('this is at error level');

5. 디버그: 작은 디버깅 유틸리티

? 도구: 디버그
? 설명: Node.js용 소형 디버깅 유틸리티
? 주요 특징:

  • 가벼워서 사용이 간편함
  • 네임스페이스를 사용한 선택적 디버깅
  • 브라우저 지원
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js: JavaScript를 위한 유연한 로깅

? 도구: Log4js
? 설명: log4j 프레임워크를 JavaScript로 변환
? 주요 특징:

  • 계층적 로깅 수준
  • 다중 출력 어펜더
  • 구성 가능한 레이아웃
javascriptCopyconst log4js = require("log4js");
log4js.configure({
  appenders: { cheese: { type: "file", filename: "cheese.log" } },
  categories: { default: { appenders: ["cheese"], level: "error" } }
});

const logger = log4js.getLogger("cheese");
logger.error("Cheese is too ripe!");

7. Elasticsearch, Logstash 및 Kibana(ELK 스택)

? 도구: ELK 스택
? 설명: 로그 관리 및 분석을 위한 강력한 조합
? 주요 특징:

  • 중앙 집중식 로깅
  • 실시간 로그 분석
  • 시각화 및 대시보드
javascriptCopyconst winston = require('winston');
const Elasticsearch = require('winston-elasticsearch');

const esTransportOpts = {
  level: 'info',
  clientOpts: { node: 'http://localhost:9200' }
};
const logger = winston.createLogger({
  transports: [
    new Elasticsearch(esTransportOpts)
  ]
});

8. Sentry: 오류 추적 및 성능 모니터링

? 도구: 센트리
? 설명: 실시간 오류 추적 및 성능 모니터링
? 주요 특징:

  • 자동 오류 캡처
  • 출시 추적
  • 성능 모니터링
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://[email protected]/0" });

try {
  someFunction();
} catch (e) {
  Sentry.captureException(e);
}

9. 새로운 유물: 애플리케이션 성능 모니터링

? 도구: 새로운 유물
? 설명: 종합적인 애플리케이션 성능 모니터링
? 주요 특징:

  • 실시간 성능 지표
  • 오류 분석
  • 맞춤 계측
javascriptCopyconst newrelic = require('newrelic');

newrelic.setTransactionName('myCustomTransaction');
// Your application code here

10. Loggly: 클라우드 기반 로그 관리

? 도구: Loggly
? 설명: 클라우드 기반 로그 관리 및 분석 서비스
? 주요 특징:

  • 중앙 집중식 로그 관리
  • 실시간 로그 검색 및 분석
  • 맞춤 대시보드 및 알림
javascriptCopyconst winston = require('winston');
const { Loggly } = require('winston-loggly-bulk');

winston.add(new Loggly({
    token: "YOUR-TOKEN",
    subdomain: "YOUR-SUBDOMAIN",
    tags: ["Winston-NodeJS"],
    json: true
}));

winston.log('info', "Node.js의 Hello World!");

보너스 팁: 구조화된 로깅

선택하는 도구에 관계없이 구조화된 로깅을 구현하면 로그 분석 기능이 크게 향상될 수 있습니다.

javascriptCopylogger.info({
  event: 'user_login',
  userId: user.id,
  timestamp: new Date().toISOString(),
  ipAddress: req.ip
});

이러한 추가 도구와 사례를 사용하면 기본 디버깅부터 고급 애플리케이션 성능 모니터링까지 모든 것을 포괄하는 포괄적인 로깅 전략을 갖게 됩니다. 효과적인 로깅의 핵심은 특정 요구 사항에 맞는 도구를 선택하고 코드베이스 전체에 모범 사례를 일관되게 적용하는 것입니다.

웹 앱 디버깅에 도움이 필요한 경우 https://alerty.ai를 확인하여 간편한 프런트엔드 모니터링에 대해 자세히 알아보세요.

즐거운 로깅을 즐기시고 Node.js 앱이 원활하게 실행되기를 바랍니다! ??

릴리스 선언문 이 글은 https://dev.to/alertyai/logging-best-practices-for-your-nodejs-app-4o9k?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3