Pino#
Node.js를 위한 매우 빠르고 가벼운 로깅 라이브러리.
“pine(소나무)“에서 이름을 따왔으며, 성능과 간결함에 중점을 둔 라이브러리.
Pino의 주요 특징#
- 빠른 속도: Pino는 다른 로깅 라이브러리보다 약 5배 정도 빠르다.
- 낮은 오버헤드: 최소한의 리소스를 사용하여 애플리케이션의 성능에 미치는 영향을 줄인다.
- JSON 형식: 로그를 JSON 형식으로 출력하여 쉽게 파싱하고 분석할 수 있다.
- 비동기 로깅: 로그 작성이 애플리케이션의 주 실행을 방해하지 않는다.
- 다양한 로그 레벨: fatal, error, warn, info, debug, trace 등 여러 레벨의 로그를 지원한다.
Pino의 장점#
- 성능: 빠른 속도로 애플리케이션의 성능을 크게 저하시키지 않는다.
- 구조화된 로깅: JSON 형식으로 로그를 쉽게 분석할 수 있다.
- 확장성: 다양한 플러그인과 통합이 가능하다.
Pino 시작하기: 실습 중심 가이드#
1. 설치하기#
터미널에서 다음 명령어를 실행한다:
1
2
3
| npm install pino
# 선택적으로 pretty 출력을 원한다면
npm install pino-pretty
|
2. 기본 사용법#
1
2
3
4
5
6
7
8
| // logger.js
const pino = require('pino')() // 기본 로거 생성
// 다양한 로깅 레벨 사용
logger.info('일반 정보 메시지')
logger.warn('경고 메시지')
logger.error('에러 메시지')
logger.debug('디버그 메시지')
|
3. 로그 레벨 이해하기#
Pino는 다음과 같은 로그 레벨을 제공한다:
trace
: 가장 상세한 로깅debug
: 개발 중 디버깅 정보info
: 일반적인 정보warn
: 경고 메시지error
: 에러 상황fatal
: 심각한 오류
4. 로그에 메타데이터 추가하기#
1
| logger.info({ user: 'John', action: 'login' }, '사용자 로그인')
|
이렇게 하면 로그 메시지와 함께 추가 정보를 JSON 형식으로 기록할 수 있다.
5. 예쁜 로그 출력하기#
1
2
3
4
5
6
7
8
| const logger = require('pino')({
transport: {
target: 'pino-pretty',
options: {
colorize: true
}
}
})
|
실제 활용 예시#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| const pino = require('pino')
const logger = pino({
level: 'info', // 로깅 레벨 설정
timestamp: pino.stdTimeFunctions.isoTime // ISO 형식 타임스탬프
})
function processUserLogin(username) {
try {
// 로그인 처리 로직
logger.info({ username }, '사용자 로그인 시도')
// 성공적인 로그인
logger.info({ username }, '사용자 로그인 성공')
} catch (error) {
// 로그인 실패 시
logger.error({
username,
errorMessage: error.message
}, '로그인 중 오류 발생')
}
}
|
참고 및 출처#
Pino - Super fast, all natural JSON logger for Node.js