프로젝트에서 로그를 관리하기 위해 로그 관리 방법에 대해서 알아봤다.
로그를 관리하는 방법으로는 로깅 모듈을 만들어서 사용하거나, 이미 만들어진 로깅 라이브러리를 사용하는 방법이 있다.
1. 직접 로그 관리 모듈 만들기
logger.js
// logger.js
function logRequest(user, method, url) {
const log = `${user.email} - ${new Date().toISOString()} - ${method} ${url}`;
console.log(log);
}
module.exports = { logRequest };
위에서 만든 모듈을 사용하여 미들웨어 만들기
// middleware.js
const logger = require('./logger');
// 토큰을 파싱하고 사용자 정보를 추출하는 미들웨어
function parseToken(req, res, next) {
const token = req.headers.authorization; // 헤더에서 토큰 추출
if (token) {
try {
const decoded = jwt.verify(token, "your-secret-key"); // 토큰을 복호화하여 사용자 정보 추출
req.user = decoded;
} catch (error) {
// 토큰이 유효하지 않은 경우 처리
return res.status(401).send("Unauthorized");
}
}
next();
}
// 로그를 생성하고 출력하는 미들웨어
function logRequest(req, res, next) {
if (req.user) {
logger.logRequest(req.user, req.method, req.originalUrl);
}
next();
}
module.exports = { parseToken, logRequest };
api 라우터에서 미들웨어 사용하기
// api.js
const express = require("express");
const { parseToken, logRequest } = require("./middleware");
const router = express.Router();
router.use(parseToken);
router.use(logRequest);
router.post("/login", function (req, res) {
// 로그인 로직
// ...
res.status(200).send("Login successful");
});
router.get("/download", function (req, res) {
// 파일 다운로드 로직
// ...
res.status(200).send("File download successful");
});
module.exports = router;
2. 외부 로깅 라이브러리 사용하기
'winston'과 같은 로깅 라이브러리를 사용하면 쉽게 로깅 시스템을 구축할 수 있다.
외부 로깅 라이브러리를 사용하면 로그레벨, 로그 파일 관리 등을 더 세밀하게 제어할 수 있다.
winston을 사용한 예시
// logger.js
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'app.log' }),
],
});
module.exports = logger;
'Node.js' 카테고리의 다른 글
[Node.js] 계정관리 서버 프로젝트 4 (0) | 2023.11.17 |
---|---|
[Node.js] 계정관리 서버 프로젝트 3 (0) | 2023.11.15 |
[Node.js] 계정관리 서버 프로젝트 2 (0) | 2023.11.15 |
[Node.js] 계정관리 서버 프로젝트 1 (0) | 2023.11.14 |
[Node.js] CommonJS 모듈 (0) | 2023.11.13 |