AWS ELB를 사용할 때 express morgan 로깅 주의점
- morgan 로깅할 때, 사용자의 ip를 기록하는
:remote-addr
토큰은 req.ip 를 사용한다- ELB, 로드밸런서를 사용하면 사용자의 ip가 아니라, ELB의 ip가 기록된다
- 그래서 사용자의 ip를 가져오려면
x-forwarded-for
헤더의 내용을 봐야한다
1 | const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; |
morgan custom
1 | (...) |
- 이런식으로 커스텀할 수 있다
req.headers['x-forwarded-for']
의 내용은
1 | X-Forwarded-For: <client>, <proxy1>, <proxy2> |
- 이런식으로 가장 앞의 ip가 사용자 ip이다
- 뒤로
,
로 나열되는 ip는 프록시임으로 당황하지 말자
1 | { |
- morgan(f(), {})
- morgan 두번째 인자로 옵션을 넣을 수 있다
- skip을 주면 특정 경우에서 로깅을 하지 않는 옵션이다
return res.statusCode < 400;
이런식으로 하면 400이하의 스테이터스 코드일 때,- 로깅을 하지 않는다는 의미이다
- 이 경우 404, 500 같은 에러들만 로깅된다