728x90
Winston 이란?
Node.js 에서 로깅을 위하 라이브러리라고 보시면됩니다. 물론, pm2에 있는 log를 보는 방식을 app.js 에서 인위적으로 바꾸는 법도 있지만, 이러한 라이브러리를 사용하게되면 다양한 설정 및 유연한 로깅 레벨을 제공하기에 좀 더 쉽고 이쁘게 기록,관리가 가능합니다.
Winston 사용법
npm install winston
const winston = require('winston');
// 사용자 정의된 로그 포맷 설정
const myFormat = winston.format.printf(({ level, message, timestamp }) => {
return `${timestamp} [${level.toUpperCase()}]: ${message}`;
});
// Winston 로거 생성 및 설정
const logger = winston.createLogger({
level: 'info', // 로깅 레벨 설정 (debug, info, warn, error)
format: winston.format.combine(
winston.format.timestamp(), // 타임스탬프 추가
myFormat // 사용자 정의된 포맷 적용
),
transports: [
new winston.transports.Console() // 콘솔로 로그 출력 설정
]
});
// 로그 메시지 작성
logger.info('This is an informational message.');
logger.warn('This is a warning message.');
logger.error('This is an error message.');
단순히, 윈스턴의 기본 형태를 쓰는 방법도 있지만, 윈스턴에서 나만의 방식을 만들어서 하는 방법도 존재합니다.
추가로 여기서 chalk 라는 라이브러리를 쓰면 내가 원하는 색깔까지 지정하여 사용이 가능합니다.
const winston = require('winston');
const chalk = require('chalk');
// 사용자 정의된 로그 포맷 설정
const myFormat = winston.format.printf(({ level, message, timestamp }) => {
let color = chalk.white; // 기본 색상 설정
// 로그 레벨에 따른 색상 선택
switch (level) {
case 'info':
color = chalk.green;
break;
case 'warn':
color = chalk.yellow;
break;
case 'error':
color = chalk.red;
break;
// 필요에 따라 다른 로그 레벨에 대한 색상을 추가할 수 있습니다.
}
// 색상이 적용된 로그 레벨 및 메시지
return `${timestamp} ${color(`[${level.toUpperCase()}]`)}: ${message}`;
});
// Winston 로거 생성 및 설정
const logger = winston.createLogger({
level: 'info', // 로깅 레벨 설정 (debug, info, warn, error)
format: winston.format.combine(
winston.format.timestamp(), // 타임스탬프 추가
myFormat // 사용자 정의된 포맷 적용
),
transports: [
new winston.transports.Console() // 콘솔로 로그 출력 설정
]
});
// 로그 메시지 작성
logger.info('This is an informational message.');
logger.warn('This is a warning message.');
logger.error('This is an error message.');
이렇게 해서 라이브러리를 이용해 색깔 변화를 줄 수 있습니다. 만약, 추가적인 라이브러리를 사용하고싶지 않다면 winston에서 기본적으로 주어지는 방식으로 써도 됩니다.
const winston = require('winston');
// Winston 로거 생성 및 설정
const logger = winston.createLogger({
level: 'info', // 로깅 레벨 설정 (debug, info, warn, error)
format: winston.format.combine(
winston.format.timestamp(), // 타임스탬프 추가
winston.format.colorize(), // 로그 레벨에 따라 색상 적용
winston.format.simple() // 간단한 포맷 사용
),
transports: [
new winston.transports.Console() // 콘솔로 로그 출력 설정
]
});
// 로그 메시지 작성
logger.info('This is an informational message.');
logger.warn('This is a warning message.');
logger.error('This is an error message.');
winston.format().colorize()를 사용하면 내장되어있는 방식으로 사용 할 수 있습니다.
728x90
'잡다한 지식' 카테고리의 다른 글
[Node] Dynamo DB 사용법 (0) | 2024.06.20 |
---|---|
[AWS] Dynamo DB 생성 방법 및 설정 (0) | 2024.06.20 |
[Linux] 터미널에서 내가 사용하고 있는 브랜치 표시하기 (0) | 2024.03.04 |
[JS] url 주소의 길이 제한 (0) | 2024.02.27 |
[JS] html에서 img 안에 src 값만 가져오기 (0) | 2024.02.21 |