728x90
반응형
morgan 미들웨어에서 기본 포맷으로 사용하지 않고 세부적인 로그 포맷을 설정 하고 싶을 때 사용합니다.
'tokens' 객체 활용
tokens 객체는 morgan에서 제공하는 토큰들을 담고 있는 객체이며, 클라이언트의 요청 정보와 서버의 응답 정보를 토큰으로 변환할 수 있습니다.
morgan(function (tokens, req, res) {
return [
tokens.method(req, res),
tokens.url(req, res),
tokens.status(req, res),
tokens.res(req, res, 'content-length'), '-',
tokens['response-time'](req, res), 'ms'
].join(' ')
})
위 예시의 각 토큰들은 클라이언트의 요청 정보와 서버의 응답 정보를 추출하고, join 함수를 사용하여 하나의 문자열로 합쳐져 로그로 출력됩니다.
출력결과는 이런식으로 나오게 되는 것입니다.
'morgan.token() 활용하기
morgan.token(name, fn)는 새로운 토큰을 추가할 수 있도록 해주는 메서드입니다. 이 메서드를 사용하여 사용자 지정 토큰을 생성할 수 있습니다.
name 토큰 이름과 그에 대한 함수 fn을 인수로 받아 새로운 토큰을 등록합니다. 이렇게 등록한 토큰은 로그 포맷 문자열 내에서 사용할 수 있습니다.
const express = require('express');
const morgan = require('morgan');
const app = express();
// User-Agent 헤더에서 브라우저 정보를 추출하는 토큰 생성
morgan.token('browser', function(req, res) {
return req.headers['user-agent'].split(' ')[0];
});
// 로그 포맷 설정
const logFormat = '[:date[iso]] :method :url :status :response-time ms - :res[content-length] - :browser';
// morgan 미들웨어 등록
app.use(morgan(logFormat, { timezone: 'Asia/Seoul' }));
// 라우트 등록
app.get('/', (req, res) => {
res.send('Hello, World!');
});
// 서버 실행
app.listen(3000, () => {
console.log('Server listening on port 3000!');
});
[ User-Agent란 ]
HTTP 요청 헤더의 일부로, 웹 브라우저 또는 다른 애플리케이션에 대한 정보를 담고 있는 문자열입니다. 이 정보는 클라이언트가 서버에 HTTP 요청을 보낼 때, 서버에서 이를 파싱하여 어떤 클라이언트에서 요청이 들어왔는지를 알 수 있도록 해줍니다. User-Agent에는 사용 중인 브라우저 또는 클라이언트 애플리케이션의 이름, 버전, 운영 체제, 장치 유형 등이 포함될 수 있습니다.
728x90
반응형
'STUDY > NodeJS' 카테고리의 다른 글
[7-2] 비밀번호 해싱 및 검증 라이브러리 - bcrypt (0) | 2023.12.13 |
---|---|
Session secret key 생성하기 - crypto 모듈 (0) | 2023.12.08 |
[4-2] HTTP 요청에 대한 정보를 로그로 출력해주는 미들웨어 - Morgan (0) | 2023.03.28 |
[1-2] Node.js 패키지 관리도구 - npm (0) | 2023.03.27 |
[3-2] 자동으로 감지하고 시작하는 nodemon (0) | 2023.03.25 |