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
메서드를 사용하여 로그 파일을 생성하고, morgan
의 stream
옵션을 통해 해당 로그 파일로 로그를 보낼 수 있습니다. interval
옵션을 설정하여 얼마나 자주 새로운 로그 파일을 생성할지 결정할 수 있습니다.
위 예시에서는 access.log
라는 이름의 로그 파일을 logs
폴더에 저장하며, 하루마다 새로운 로그 파일이 생성됩니다.
3. 기타 로그 파일 관리
로그 파일을 적절히 관리하기 위해 다양한 기능을 추가할 수 있습니다. 예를 들어, 로그 파일의 최대 크기를 설정하여 일정 크기마다 새로운 파일로 분할하게 할 수 있습니다. 또는 특정 기간이 지난 로그 파일을 삭제하는 기능을 추가할 수도 있습니다.
이러한 기능은 rotating-file-stream
패키지의 다양한 옵션 설정을 통해 구현할 수 있습니다. 자세한 내용은 해당 패키지의 문서를 참고하시기 바랍니다.
결론
Express.js 애플리케이션에서 로그 파일을 적절히 분할하여 관리하는 방법에 대해 알아보았습니다. 로그 파일을 분할하고 관리함으로써 애플리케이션의 성능을 최적화하고, 유지보수를 용이하게 할 수 있습니다. Express.js의 로깅 미들웨어와 rotating-file-stream
패키지를 활용하여 로그 파일 관리에 대한 효율성을 높여보세요.