[document] npm - morgan

차봉석·2022년 9월 9일
0

study

목록 보기
1/1

강의를 보다가 알게된 패키지인 morgan 이 있다.
https://www.npmjs.com/package/morgan

morgan
HTTP request logger middleware for node.js

node js 미들웨어로, http request에 대한 log를 반환해준다.

내가 처음으로 정독하게 될 영광의 첫 document로 선정되었다.


Dexter의 이름을 땄는데, 너가 끝까지 보지 않을 프로그램이다? 유머같은데 ... Dexter

주인공 이름이 morgan 이다.


맞다. 작년에 한 프로젝트 중 최신 인기 영화나 티피프로그램을 보여주는 사이트를 만들었는데 거기서 한동안 상위권에 있던 드라마인것 같다. 새 시즌이 나왔었나 보다.
왜 끝까지 보지 않을거라고 말한지는 모르겠다. 시즌이 많아서 그런가?


사용법

다음 명령어로 설치한 뒤

다음과 같이 불러온다.

주어진 포맷과 옵션을 이용하여 모건(미들웨어 함수)를 만들 수 있다. 포맷 인자는 미리 정해진 이름(밑에나올거임)의 문자열이거나 format string 문자열이거나 log entry를 생성할 함수이다.
인자로 밑에 나오는 문자열 중에서 적거나 format string으로 적거나 log entry를 생성하는 함수... 는 잘 모르겠다.
format은 넣어줘야하고, options은 말 그대로 옵션이니까 안넣어도 실행된다.

format

위의 두 줄은 format에 밑에 나올 "dev" 를 주어서 리턴되는 로그 값이고 아래 다시 format값을 지우고 실행해봤는데 format없이 사용하는 것은 권장되지 않는다고 뜨면서 아래와 같은 이상한 형식으로 log가 반환되었다.


  1. predefined format string

    미리 정의된 형식으로 포맷을 설정하는 방법이다. 아까는 'dev'로 설정한 결과를 보았었다

  2. Using format string of predefined tokens.

    미리 정의된 토큰을 이용하여서 format string을 만들어서 format을 설정하는 방법이다.
    tokens가 위와 같은 :method, :url, :status, :res[content-length] -, :response-time ms 인 것 같다. 이것도 아래에 사용할 수 있는 것이 정의되어 있을 것 같다.
    자기 마음대로 설정할 수 있다는 점에서 전의 방법과는 차별성이 있는 것 같다.

  3. Using a custom format function

    음 .. 2번째 방법처럼 토큰을 이용해서 커스텀으로 설정한 형식을 함수(앞서 나온 function that will produce a log entry 인 것 같다)로 만들고, 그 함수를 morgan 함수에 format인자로 주는 것 같다. 그 아래에는 이 함수에 대한 설명인 것 같다.

    format function은 3개의 매개변수(tokens, req, res)와 함께 호출될것이다.
    tokens : an object with all defined tokens
    req : HTTP request
    res : HTTP response
    function은 log line의 문자열을 반환하거나 undefined 또는 null 을 반환한다. (skip하는 경우)

난 첫번째 방법만 쓸 것 같다. (자주 쓰는 포맷이니까 미리 정해놨겠지?)


Options

다음 속성들을 속성 객체로 받는다.

  • immediate : 즉시.. 서버가 충돌나고 requests는 log된다. 하지만 response는 안된다.
  • skip : 로깅이 스킵될 경우를 설정하는 것같다. default는 false. 예시코드는 res.statusCode < 400 이면 스킵하라는 것같다.
    다음과 같이 실행해보면 스테이터스 코드가 304가 나오는데 skip 설정을 하면 로깅이 출력되지 않는다.
  • stream : 모르겠다.


Predefined Formats

  • combined
  • common
  • dev
  • short
  • tiny
    이 있다.

Tokens

새로운 토큰을 만드는 방법을 예로써 알려주고 있다.
그 후로는 미리 정의된 토큰들과 설명이 나온다.

토큰을 ... 뭐 .. 사용하는 방법같다.


Examples

예시다. 다른 문서에서도 제일 자주 보게 될 섹션인것 같다.

express 에서 출력하는 방법

vanilla-js 에서 출력하는 방법

파일에 저장하는 법
아까 나왔던 stream 옵션이 여기서 사용되는 것 같다.

access.log 파일이 생기고 log들이 생겼다.
다음은 폴더에 매일 다른 파일로 logging을 하는 방법인것 같다.

이번엔 로그폴더가 생기고 거기에 파일이 생겼다. rotating-file-stream module을 설치하고 해야했다.




모건은 여러번 쓸수 있다 ! 조합해서 쓰는 방법.

  • 한 req에 한 res
  • 파일에 저장하는데 에러는 콘솔에 띄우기...
  • 그밖에 !

skip 옵션을 사용해서 한번, stream으로 한번.. 이런 방식으로 조합해서 쓰는 예시이다.



custom token을 사용한 예시이다. 예시를 보니까 좋네 !?


npm에 node-uuid 는 안나와서 비슷해보이는 short-uuid 모듈을 사용해서 해봤다. 위처럼 결과가 나왔다.


마지막으로 라이센스와 키워드가 나오고 문서가 끝났다.


시간이 많이 걸렸지만 처음으로 문서를 처음부터 끝까지 정독해보고 예시도 다 해보았다.
문서의 짜임이나 앞으로 다른 문서를 볼때 어떻게 봐야 할지 조금은 감이 잡힌 것 같다.
profile
자두과자

0개의 댓글