1 minute read

들어가기전에

앱을 구성할 때는 위에서부터 아래로 순서대로 실행되기 때문에

  1. 공통 미들웨어: 모든 라우트에서 사용하는
  2. 범위가 좁은 라우트: path variable을 사용하는
  3. 범위가 넓은 라우트: query String을 사용하는
  4. 에러 처리 미들웨어

순으로 작성해야한다.

로그찍는 미들웨어 만들기

.
├── 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