morgan
- morgan에 연결후 서버를 실행하면 추가적인 로그를 표현해줌, 요청과 응답에 대한 정보를 콘솔에 기록해주는 미들웨어
npm 설치
npm i morgan
미들웨어 연결
const morgan = require('morgan')
기본구문
- 인자 format은 미리정의된 이름의 문자열, 형식문자열, 또는 로그 항목을 생성하는 함수가 됨
morgan(format, options)
format
combined
- 배포환경에서 사용함
- 불특정 다수가 접속하기 때문에 IP를 로그에 남겨줌
:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
- :remote-addr: 클라이언트의 IP 주소
- :remote-user: 원격 사용자
- :date[clf]: 클라이언트 요청을 받은 시간 (Common Log Format 형식)
- :method: 요청 메소드 (여기서는 GET)
- :url: 요청한 URL (여기서는 /)
- HTTP/:http-version: HTTP 버전 (여기서는 HTTP/1.1)
- :status: 응답 상태 코드 (여기서는 200, 404, 304)
- :res[content-length]: 응답으로 전송된 데이터의 크기(바이트)
- :referrer: 리퍼러 정보
- :user-agent: 클라이언트의 유저 에이전트 정보
로컬에서 thunderclient로 get요청시
::ffff:127.0.0.1 - - [28/Apr/2023:13:41:35 +0000] "GET / HTTP/1.1" 200 12 "-" "Thunder Client (https://www.thunderclient.com)"
common
- 표준 Apache 공통 로그 출력.
:remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
dev
- 개발용을 위해 response에 따라 색상이 입혀진 축약된 로그 출력
- :status값이 빨간색이면 서버에러코드 노란색이면 클라이언트 에러 코드 , 청록색은 리다이렉션 코드
:method :url :status :response-time ms - :res[content-length]
로컬에서 thunderclient로 get요청시
- :method: 요청 메소드 (여기서는 GET)
- :url: 요청한 URL (여기서는 /)
- :status: 응답 상태 코드 (여기서는 200)
- :response-time ms: 서버가 요청을 받아 응답하는 데 걸린 시간(밀리초)
- -: 추가 정보 없음
- :res[content-length]: 응답으로 전송된 데이터의 크기 (12바이트)
GET / 200 2.921 ms - 12
short
- 기본 설정보다 짧은 로그를 출력하고, 응답 시간을 포함.
:remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms
::ffff:127.0.0.1 - GET / HTTP/1.1 200 12 - 2.533 ms
tiny
- 최소화된 로그를 출력
:method :url :status :res[content-length] - :response-time ms
GET / 200 12 - 2.533 ms
options
immediate
- response대신 request에 따라 로그를 작성함
- 서버 크래시가 발생하여도 request들은 기록되만, response의 데이터는 기록 할 수 없기때문에 사용
const myMorgan = morgan('combined', {
// 코드가 400 미만라면 함수를 리턴해 버려서 로그 기록 안함.
// 코드가 400 이상이면 로그 기록함
immediate: function (req, res) { return res.statusCode < 400 }
});
skip
- 로깅의 스킵여부를 결정하기 위한 함수이다.
- 기본값은 false. 이 함수는 "skip(req, res)" 형식으로 호출된다.
const myMorgan = morgan('combined', {
// 코드가 400 미만라면 함수를 리턴해 버려서 로그 기록 안함.
// 코드가 400 이상이면 로그 기록함
skip: function (req, res) { return res.statusCode < 400 }
});
stream
- 로그 작성을 위한 Output stream옵션. 기본값은 process.stdout.
https://www.npmjs.com/package/morgan
morgan
HTTP request logger middleware for node.js. Latest version: 1.10.0, last published: 3 years ago. Start using morgan in your project by running `npm i morgan`. There are 8424 other projects in the npm registry using morgan.
www.npmjs.com
https://inpa.tistory.com/entry/EXPRESS-%F0%9F%93%9A-morgan-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4
참고블로그
[EXPRESS] 📚 morgan 미들웨어 💯 사용법 정리
morgan 모듈 morgan에 연결 후 포트에 접속하면 기존 로그 외에 추가적인 로그를 볼 수 있다. 위 코드를 실행하여 3000번 포트에 들어간 후 콘솔을 보면 아래와 같은 로그가 찍혀있는 것을 볼 수 있다.
inpa.tistory.com
'Node.js' 카테고리의 다른 글
Node.js 보안관련 문제 (0) | 2023.07.25 |
---|---|
Cluster 모듈 (0) | 2023.06.10 |
Process 모듈 (0) | 2023.06.10 |
dotenv 환경변수 설정하기 (0) | 2023.05.04 |
Node.js 텍스트 아스키 코드로 변환 (0) | 2023.04.12 |