- 개발환경
# 개발환경 os : windows10 Pro 64bit tool : visual studio code npm : v6.9.0 nodejs : v10.16.0 |
- 목적
: 테스트 및 디버깅, 통계 등의 사용을 위해 로그를 남기기 위함
* 소스 디렉토리
# 소스 디렉토리 [ROOT] ㄴ app.js ㄴ [config] ㄴ dev.js ㄴ prod.js ㄴ logger.js ㄴ [routes] ㄴ router1.js ㄴ router2.js |
0. 사전준비
https://bogyum-uncle.tistory.com/71?category=804624
1. Logging을 위한 서드파티 모듈 설치
1.1. winston
1.2. winston-daily-rotate-file
1.3. date-utils
2. logger 세팅
2.1. /appRoot/config 디렉토리에 logger.js 파일 생성
2.2. /appRoot/config/logger.js
const winston = require('winston');
require('winston-daily-rotate-file');
require('date-utils');
const logger = winston.createLogger({
level: 'info', // log level
format: winston.format.json(),
transports: [
new winston.transports.DailyRotateFile({
filename : 'log/system.log', // log 폴더에 system.log 이름으로 저장
zippedArchive: true, // 압축여부
format: winston.format.printf(
info => `${new Date().toFormat('YYYY-MM-DD HH24:MI:SS')} [${info.level.toUpperCase()}] - ${info.message}`)
}),
//콘솔 출력
new winston.transports.Console({
format: winston.format.printf(
info => `${new Date().toFormat('YYYY-MM-DD HH24:MI:SS')} [${info.level.toUpperCase()}] - ${info.message}`)
})
],
colorize: true,
humanReadableUnhandledException: true,
});
//운영중이지 않을 경우 콘솔에 출력 추가
// if (process.env.NODE_ENV !== 'production') {
// new winston.transports.Console({
// format: winston.format.printf(
// info => `${new Date().toFormat('YYYY-MM-DD HH24:MI:SS')} [${info.level.toUpperCase()}] - ${info.message}`)
// })
// }
module.exports = logger;
2.3. logging 확인하기
/appRoot/routes/router1.js
//함수로 만들어 객체 app을 전달
module.exports = function(app){
var express = require('express');
var router = express.Router();
var logger = require('../config/logger');
router.get("/", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r1 경로로 접근...!");
logger.info("logger info test");
// console.log(response.statusCode);
});
router.get("/action", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r1/action 경로로 접근...!");
// console.log(response.statusCode);
});
//라우터 리턴
return router;
}
: logger 변수 생성, info 레벨로 내용 작성
3. 확인
3.1. 브라우저 확인
3.2. 콘솔창 확인
3.3. log 파일 생성 확인
3.4. log 파일 내용 보기
'LANGUAGE > NODEJS' 카테고리의 다른 글
[NODEJS] express, routing (0) | 2019.08.26 |
---|---|
[NODEJS] express , 개발, 운영환경 구분 (NODE_ENV) (0) | 2019.08.26 |
[NODEJS] Mysql 연동 1/ 세팅, 스키마 생성 (0) | 2019.08.22 |
NODEJS - 기본세팅 / 5 - 템플릿엔진 ejs (0) | 2019.07.19 |
NODEJS - 기본세팅 / 4, 리다이렉션, request, response 확장 (0) | 2019.07.19 |