[javascript] Express.js에서의 로그 기록 방법

Express.js는 Node.js를 기반으로 한 웹 애플리케이션 프레임워크입니다. 로깅은 애플리케이션 개발과 유지 보수를 위해 중요한 역할을 합니다. 이번 글에서는 Express.js 애플리케이션에서 로그를 기록하는 방법을 알아보겠습니다.

1. 기본 로깅 방법

Express.js는 기본적으로 console.log()를 사용하여 로그를 출력할 수 있습니다. 예를 들어, 아래의 예제는 요청이 들어올 때마다 URL을 출력하는 간단한 미들웨어 함수입니다.

const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log('Received request:', req.url);
  next();
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

이 예제에서는 console.log()를 사용하여 요청 URL을 출력합니다. 서버를 실행하고 브라우저에서 URL에 접속하면 서버 로그에 요청 URL이 출력됩니다.

2. 로그 미들웨어 사용

더욱 복잡한 로깅 작업을 위해서는 로그 미들웨어를 사용하는 것이 좋습니다. Express.js에서 많이 사용되는 로그 미들웨어로는 morgan이 있습니다. morgan은 HTTP 요청과 응답에 대한 로그 기능을 제공합니다.

morgan을 사용하려면 먼저 morgan 패키지를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.

npm install morgan

morgan을 사용하여 Express.js 애플리케이션에 로그 미들웨어를 추가하는 방법은 다음과 같습니다.

const express = require('express');
const morgan = require('morgan');
const app = express();

app.use(morgan('combined'));

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

위 예제는 모든 HTTP 요청과 관련된 정보를 출력하는 로그 미들웨어를 추가한 것입니다. combined 포맷을 사용하였으며, morgan의 다양한 로그 포맷 옵션을 지원합니다.

3. 로그 파일로 저장

로그를 파일로 저장하려면 fs 모듈을 사용하여 파일에 기록해야 합니다. 예를 들어, 아래의 예제는 요청과 응답을 로그 파일에 기록하는 미들웨어 함수입니다.

const express = require('express');
const morgan = require('morgan');
const fs = require('fs');
const app = express();

const accessLogStream = fs.createWriteStream('./access.log', { flags: 'a' });

app.use(morgan('combined', { stream: accessLogStream }));

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

위 예제에서는 fs.createWriteStream()을 사용하여 access.log 파일을 생성합니다. 이 파일에 로그를 기록하려면 stream 옵션에 accessLogStream을 전달합니다.

Express.js에서 로그를 기록하는 방법에 대해 알아보았습니다. 간단한 console.log()부터 복잡한 로그 미들웨어와 파일 기록까지 사용하여 웹 애플리케이션의 동작을 추적하고 디버깅하는 데 도움이 됩니다. Express.js의 다른 유용한 로그 미들웨어도 사용해보세요.