Node.js 개발자로서 로깅은 애플리케이션 디버깅, 모니터링, 유지 관리에 있어서 거의 모든 것입니다. 하지만 로깅 모범 사례를 사용하고 있습니까? Node.js 앱을 다음 단계로 끌어올릴 수 있는 몇 가지 로깅 기술을 살펴보겠습니다.
자세한 내용은 전체 블로그 게시물을 확인하세요.
? 도구: 윈스턴
? 설명: Node.js를 위한 다목적 로깅 라이브러리
? 주요 특징:
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' }) ] });
? 도구: 모건
? 설명: Express.js
에서 HTTP 요청 로깅을 단순화합니다.
? 주요 특징:
javascriptCopyconst express = require('express'); const morgan = require('morgan'); const app = express(); app.use(morgan('combined'));
? 도구: Bunyan
? 설명: Node.js 애플리케이션에 대한 구조화된 JSON 로깅
? 주요 특징:
javascriptCopyconst bunyan = require('bunyan'); const log = bunyan.createLogger({name: "myapp"}); log.info("Hi"); log.warn({lang: 'fr'}, "Au revoir");
? 도구: 피노
? 설명: JSON 출력을 통한 낮은 오버헤드 로깅
? 주요 특징:
javascriptCopyconst pino = require('pino'); const logger = pino(); logger.info('hello world'); logger.error('this is at error level');
? 도구: 디버그
? 설명: Node.js용 소형 디버깅 유틸리티
? 주요 특징:
javascriptCopyconst debug = require('debug')('http'); debug('booting %o', name);
? 도구: 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!");
? 도구: 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) ] });
? 도구: 센트리
? 설명: 실시간 오류 추적 및 성능 모니터링
? 주요 특징:
javascriptCopyconst Sentry = require("@sentry/node"); Sentry.init({ dsn: "https://[email protected]/0" }); try { someFunction(); } catch (e) { Sentry.captureException(e); }
? 도구: 새로운 유물
? 설명: 종합적인 애플리케이션 성능 모니터링
? 주요 특징:
javascriptCopyconst newrelic = require('newrelic'); newrelic.setTransactionName('myCustomTransaction'); // Your application code here
? 도구: 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 앱이 원활하게 실행되기를 바랍니다! ??
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3