[javascript] Express.js에서의 로그 파일 분할 방법

Express.js는 Node.js의 대표적인 웹 프레임워크 중 하나로, 로깅(logging) 기능을 제공합니다. 로그 파일을 적절히 분할하여 관리하는 것은 애플리케이션의 성능 및 유지보수에 중요한 역할을 합니다. 이번 포스트에서는 Express.js에서 로그 파일을 분할하는 방법에 대해 다루겠습니다.

1. 로깅 미들웨어 설정

Express.js에서 로깅을 다루기 위해, morgan이라는 로깅 미들웨어를 사용할 수 있습니다. 먼저 morgan을 설치하고, Express 애플리케이션에 로깅 미들웨어를 설정해야 합니다. 아래는 morgan 로깅 미들웨어를 사용하여 로그를 콘솔에 출력하는 예시입니다.

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

const app = express();

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

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

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

2. 로그 파일 분할 설정

Express.js에서 로그 파일을 분할하기 위해 rotating-file-stream 패키지를 사용할 수 있습니다. 이 패키지는 날짜 또는 파일의 크기에 따라 로그 파일을 자동으로 분할하는 기능을 제공합니다.

먼저 rotating-file-stream을 설치합니다.

npm install rotating-file-stream

다음은 로깅 미들웨어 설정에 로그 파일 분할을 추가한 예시입니다.

const express = require('express');
const morgan = require('morgan');
const rfs = require('rotating-file-stream');

const app = express();

const accessLogStream = rfs.createStream('access.log', {
  interval: '1d', // 하루마다 새로운 로그 파일 생성
  path: path.join(__dirname, 'logs')
});

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

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

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

위 예시에서는 rotating-file-stream 패키지의 createStream 메서드를 사용하여 로그 파일을 생성하고, morganstream 옵션을 통해 해당 로그 파일로 로그를 보낼 수 있습니다. interval 옵션을 설정하여 얼마나 자주 새로운 로그 파일을 생성할지 결정할 수 있습니다.

위 예시에서는 access.log라는 이름의 로그 파일을 logs 폴더에 저장하며, 하루마다 새로운 로그 파일이 생성됩니다.

3. 기타 로그 파일 관리

로그 파일을 적절히 관리하기 위해 다양한 기능을 추가할 수 있습니다. 예를 들어, 로그 파일의 최대 크기를 설정하여 일정 크기마다 새로운 파일로 분할하게 할 수 있습니다. 또는 특정 기간이 지난 로그 파일을 삭제하는 기능을 추가할 수도 있습니다.

이러한 기능은 rotating-file-stream 패키지의 다양한 옵션 설정을 통해 구현할 수 있습니다. 자세한 내용은 해당 패키지의 문서를 참고하시기 바랍니다.

결론

Express.js 애플리케이션에서 로그 파일을 적절히 분할하여 관리하는 방법에 대해 알아보았습니다. 로그 파일을 분할하고 관리함으로써 애플리케이션의 성능을 최적화하고, 유지보수를 용이하게 할 수 있습니다. Express.js의 로깅 미들웨어와 rotating-file-stream 패키지를 활용하여 로그 파일 관리에 대한 효율성을 높여보세요.