[Node.js] Winston모듈

Vorhandenheit ·2022년 8월 26일
0

JS/Node 

목록 보기
53/63

로그 관리

1. Winston 모듈

Node.js는 log를 효율적이게 관리 할 수 있게 도와주는 모듈 winson.js가 있습니다.
개발할 때는 console.log를 사용해서 오류를 체크할 수 있지만, 실제 서버가 작동 중일 때는 사용할 수 없습니다.

이럴 때 winston을 통해서 시스템을 운영하면서 오류, 장애가 발생했을 때 외부 파일에 저장합니다.

  • loggeer.js
const winston = require('winston'); //윈스턴 모듈
const winstonDaily = require('winston-daily-rotate-file'); // 로그 파일을 일자별로 생성

const logFormat = printf(({level, message, label, timestamp}) => {
	return `${timestamp} [${label}] ${level} ${message}` 
}) // 로그 출력 포맷 정의
const logger = winston.createLogger({
	format : combine(
    	label({
          label : 'System Name'
        }), // 어플리케이션 이름
      	timestamp({
        	format : 'YYYY-MM-DD HH:mm:ss'
        }),
      logFormat // log 출력 포맷
    )
  
  
  	transports : [ // 실제 로그를 어떻게 기록할 것일까 정의
  		new winstonDaily({
			level : 'info', //info레벨
  			datePattern : 'YYYY-MM-DD', // 파일 날짜형식
  			dirname : './log', // 파일 경로를 입력합니다. 같은 폴더내에 'log'폴더에 저장한다는 말입니다
  			filename : `%DATE%.log`, // 파일 이름
  			maxFiles : 30, //최근 30일치 파일만 저장
  			zippedArcive : true // 아카이브된 로그 파일을 gzip으로 압축할지 여부
		}),
      //info 레벨 로그를 저장할 파일 설정
      
      
      new winstonDaily({
      	level : 'error', // error 레벨에선
        datePattern : 'YYYY-MM-DD',
        dirname: './log',
        filename : `%DATE%.error.log`,
        maxFiles : 30,
        zippedArchive : true
      })
	// error 레벨 로그를 저장할 파일 설정
  	],
      //에러 잡지 못한 경우
      exceptionHandlers: [
        new winstonDaily({
            level: 'error',
            datePattern: 'YYYY-MM-DD',
            dirname: './logs',
            filename: `%DATE%.exception.log`
        })
    ]
})
// 운영환경이 아닌 경우 콘솔로도 로그 출력
if (process.env.NODE_ENV !== 'production') {
	logger.add(new winston.transports.Console({
    	format : winston.format.combine(
        	winston.format.colorize(), //색상 넣어서 출력
          	winston.format.simple()  // 간단한 포맷으로 출력
        )
    })
})

결과

에러를 날리면 해당 폴더내에 파일이 생기는 걸 볼 수 있습니다.

출처

<Node.js 프로젝트 투입 전>
https://inpa.tistory.com/entry/NODE-%F0%9F%93%9A-Winston-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%84%9C%EB%B2%84-%EB%A1%9C%EA%B7%B8-%EA%B4%80%EB%A6%AC

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글