우리가 만든 마이크로서비스 아키텍처에 로그를 관리하는 마이크로서비스를 추가하겠습니다. 로그 입력 기능만 있습니다.
코드 12-1 로그 관리 마이크로서비스
예제 파일 : microservice_logs.js
'use strict'; const cluster = require('cluster'); class logs extends require('./server.js') { constructor() { super("logs" // ➊ POST/logs 한 가지 기능만 가지도록 함 , process.argv[2] ? Number(process.argv[2]) : 9040 , ["POST/logs"] ); 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); } } if (cluster.isMaster) { cluster.fork(); cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); cluster.fork(); }); } else { new logs(); }
이전에 만든 마이크로서비스와 동일한 패턴으로 로그 관리 마이크로서비스를 만듭니다. 이름은 logs로 설정하고, 기본 포트 정보는 9040으로 지정하며, 기능은 로그 입력만 구현합니다(➊). API가 호출되면 화면에는 시간과 접속한 마이크로서비스의 주소 정보, 입력한 로그를 출력합니다(➋).