지금은 단순히 매번 로그가 입력될 때마다 같은 파일에 저장하도록 구현했지만 날짜별, 시간별로 다른 파일에 저장하거나 일정한 간격으로 로그를 모아서 파일에 저장하는 것이 더욱 효율적입니다. 각자의 시스템에 맞는 로그 저장 방식을 설계하세요.
전체 코드는 다음과 같습니다.
코드 12-5 파일 저장 로그 관리 마이크로서비스 전체 코드
예제 파일 : microservice_logs_file.js
'use strict'; const cluster = require('cluster'); // cluster 모듈 로드 const fs = require('fs'); // fs 모듈 로드 class logs extends require('./server.js') { constructor() { super("logs" , process.argv[2] ? Number(process.argv[2]) : 9040 , ["POST/logs"] ); // writestream 생성 this.writestream = fs.createWriteStream('./log.txt', { flags: 'a' }); this.connectToDistributor("127.0.0.1", 9000, (data) => { console.log("Distributor Notification", data); }); } onRead(socket, data) { const sz = new Date().toLocaleString() + '\t' + socket.remoteAddress + '\t' + socket.remotePort + '\t' + JSON.stringify(data) + '\n'; console.log(sz); this.writestream.write(sz); // 로그 파일 저장 } } if (cluster.isMaster) { // 자식 프로세스 실행 cluster.fork(); // Exit 이벤트가 발생하면 새로운 자식 프로세스 실행 cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); cluster.fork(); }); } else { new logs(); }