노드JS 미들웨어 모듈화(1) 로거
들어가기전에
앱을 구성할 때는 위에서부터 아래로 순서대로 실행되기 때문에
- 공통 미들웨어: 모든 라우트에서 사용하는
- 범위가 좁은 라우트: path variable을 사용하는
- 범위가 넓은 라우트: query String을 사용하는
- 에러 처리 미들웨어
순으로 작성해야한다.
로그찍는 미들웨어 만들기
.
├── app.js
├── server.js
├── controllers
│ ├── main
│ │ └── main.controller.js
│ └── member
│ └── member.controller.js
├── middlewares # 미들웨어를 관리 전용 디렉토리를 생성
│ └── logger.js # 커스텀로거 미들웨어 모듈화 생성
└── routes
├── index.js
├── main
│ └── index.js
└── member
├── basic
│ └── index.js
└── index.js
STEP1. 미들웨어 관리 디렉토리 생성
mkdir middlewares
touch middlewares/logger.js
STEP2 로그 찍는 미들웨어 모듈 만들기
/middlewares/logger.js
/* AS-IS: 단순로그
const logger = function() {
return function(req, res, next) {
console.log('미들웨어 발동');
next();
}
}
*/
// TO-BE: 요청메소드, URL 출력
const logger = () => (req, res, next) => {
const log = `\n${req.method} ${req.url}`;
console.log(log);
next();
}
module.exports = logger();
주의)
미들웨어 등록시 app.use(미들웨어)
를 사용했다.
미들웨어 부분은 function(req, res, next) 이므로 꼭 함수를 리턴하도록 구현해야한다.
STEP2 로그 찍는 미들웨어 모듈 만들기
/app.js
const express = require('express');
const PORT = 3000;
const logger = require('./middlewares/logger');
class App {
constructor() {
this.app = express();
this.setMiddlewares(); //미들웨어 생성자 SET
this.setRouting();
}
setRouting() {
const routes = require('./routes');
this.app.use('/', routes);
}
setMiddlewares() {
this.app.use(logger); //만든 'logger' 미들웨어 등록
}
}
module.exports = new App().app;
결과
# 클라이언트 접속 (http://호스트:포트/member/select)
GET /member/select
# 클라이언트 접속 (http://호스트:포트/)
GET /
Leave a comment