일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백준10950번 c++
- 이클립스 알고리즘 환경
- 백준 1000번 java
- 백준 10950번 java
- 오라클
- 백준 10951번
- oracle
- 펭수 달력
- 백준 1000번 c++
- JavaScript
- RETURN ROW IF NO DATA FOUND
- 자바스크립트
- 2020 펭수 달력
- 백준 10951번 c++
- 티스토리 초대장
- 백준 10950번 c
- 포항 지진
- Eclipse Althrithm
- 백준 1000번
- 백준 10951번 c
- 백준 10950번
- 펭수 2020 달력
- 백준 10951번 java
- 지진
- nodejs
- 티스토리 초대장 이벤트
- 배열 복사
- 이클립스 알고리즘 세팅
- 백준 1000번 c
- 백준 알고리즘
- Today
- Total
스노우보드 참 좋아하는데 맨날 키보드 앞에만 있네
[NodeJS] Winston 모듈로 만드는 Logger 본문
Winston 모듈로 만드는 Logger
기본적으로 자바스크립트에서는 console 객체의 log(), error() 메서드 등으로 로그를 출력할 수 있다.
그런데 프로그램 크기가 커지면, 로그의 양도 많아지고, 로그를 보관했다가 이후 확인할 일이 생기기도 한다.
따라서 다양한 방식으로 로그를 남기기 위해 외부의 다양한 모듈을 사용할 수 있다.
오늘은 그 중 Winston으로 로거를 만들어서 로그를 남겨보자.
** 로거 (Logger) : 로그를 출력하는 객체
winston
winston은 multiple transports를 지원하는 비동기 로깅 라이브러리다.
** transports : 속성 값으로 설정 정보를 전달할 수 있으며, 로그가 기록되는 저장소를 말한다.
winston은 로그를 파일로 저장하면서, 동시에 화면에 출력할 수 있다.
출력하려면 logger 객체의 debug(), info(), error() 메서드를 호출한다.
winston logger는 각각 다른 로그 수준으로 구성되어 있다.
Transports
로깅하는 방식을 transports 라고 한다.
winston에는 내장 네트워킹과 파일 입출력 등 사용가능한 transports가 있다.
로깅 수준 (Logging Levels)
winston의 로깅 수준은 RFC5424에 명시된 심각도 수준에 따라 설정되어있다.
각 수준은 단계별로 우선 순위가 부여되며, 어떤 정보까지 출력할 것인지 결정한다.
하위 수준은 상위 수준을 모두 포함하여 출력한다.
로깅 수준을 info로 설정했더니 debug 로그는 출력하지 않았다.
{ emerg: 0, alert: 1, crit: 2, error: 3, warning: 4, notice: 5, info: 6, debug: 7 } |
** Heightest level to Lowest level
winston 설치 - OSX
터미널에 다음과 같이 명령어를 입력하여 모듈을 설치한다.
$ npm install winston --save
그러면 winston 모듈이 설치된다.
$ npm install winston --save npm WARN nodeexample1@1.0.0 No description npm WARN nodeexample1@1.0.0 No repository field. + winston@2.4.0 added 7 packages in 1.419s |
사용법
winston을 사용하는 방법은 일반적으로 두 가지가 있다.
간편한 방법
로그 레벨을 나타내는 문자열을 log() 메서드에 전달하여 출력한다.
require('winston') 을 이용하면 프로그램 전체에서 사용할 수 있다.
기본 로깅수준이 info로 설정되어 debug 로그는 출력되지 않았다.
1 2 3 4 5 6 7 8 9 10 11 12 | var winston = require('winston'); winston.log('info', 'info Message.'); winston.log('info', 'info Message', { anything: 'metadata' }); winston.log('debug', 'debug message. %j', { id: '1234' }, {}); winston.log('warn', 'warn Message.'); winston.log('error', 'error Message.', { err_code: '500' }); winston.debug('debug Message'); winston.info('info Message'); winston.warn('warn Message'); winston.error('error Message'); |
실행결과
인스턴스화 방법
winston.Logger 를 사용하여 인스턴스화하여 레벨 지정 메서드 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | var winston = require('winston'); var logger = new winston.Logger({ transports: [ new winston.transports.Console({ level: 'debug', silent: false, colorize: false, timestamp: false, }), new winston.transports.File({ level: 'debug', silent: false, colorize: false, timestamp: true, filename: 'app-logging.log', maxsize: 1024, maxFiles: 3, json: true }) ] }); logger.log('info', 'info Message.'); logger.log('info', 'info Message', { anything: 'metadata' }); logger.log('debug', 'debug message. %j', { id: '1234' }, {}); logger.log('warn', 'warn Message.'); logger.log('error', 'error Message.', { err_code: '500' }); logger.debug('debug Message'); logger.info('info Message'); logger.warn('warn Message'); logger.error('error Message'); |
실행결과
winston을 이용한 간단한 로그 출력 프로그램을 제작해보는 것도 좋은 공부가 될 것 같다.
출처 : https://github.com/winstonjs/winston#transports
'개발 > NodeJS' 카테고리의 다른 글
[MongoDB] MongoDB 실행, 데이터베이스 생성/제거, Collection 생성/제거 (0) | 2017.11.13 |
---|---|
[NodeJS] 맥북에 MongoDB 설치하기 (0) | 2017.11.09 |
[NodeJS] 비동기 프로그래밍 (0) | 2017.11.08 |